【问题标题】:R foreach runs forever jupyter notebook with rpy2 pythonR foreach 使用 rpy2 python 永远运行 jupyter notebook
【发布时间】:2019-11-03 19:07:16
【问题描述】:

我有一个 python jupyter notebook,我在其中运行一些数据获取代码,它给了我一个 fcs 文件列表。我在 R 中使用 fcsparser 和一个 foreach 并行解析这些:

%%R -i files -o data_fcs
library(dplyr)
library(doParallel)
library(foreach)
library(flowCore)
registerDoParallel(cores=4)
trans = arcsinhTransform(transformationId='arcsinhTransform',a=0,b=(1/5),c=0)
print("a")
data_fcs <- foreach(file=files) %dopar% {
    library(flowCore)
    print(sprintf("%s", file))
    # load fcs file
    fcs = read.FCS(file)........(more code after this)

“a”是在 foreach 循环之前打印的,但我猜里面的东西永远不会被执行,因为没有其他东西被打印,因为代码只是无休止地运行。我的机器(MacBook Pro 笔记本电脑)有 4 个内核。

有时,代码在大约一分钟内随机运行,脚本完成,这对我来说很奇怪。这个问题的原因可能是什么?谢谢!

【问题讨论】:

  • foreach 创建的每个子流程都会自动忽略其输出,因此您不会看到其中使用的print 语句的任何输出。
  • 我会避免在像 Jupyter(一个可视化、数据分析、原型设计平台)这样的 IDE 中运行复杂的进程,比如 R 的并行处理,甚至在像 rpy2 这样的语言 API 中通过 Jupyter 魔术函数调用。这么多层次。考虑在命令行运行进程(python 的subprocess -> R 的Rscript.exe)并将数据结果导入 Jupyter 以供最终使用数据工作。节省内存!
  • 感谢您的建议!

标签: python r foreach jupyter-notebook core


【解决方案1】:

我找到了一个“解决方案”,就是在每次成功运行后重新启动 jupyter...现在似乎可以工作了

【讨论】:

    猜你喜欢
    • 2021-02-06
    • 1970-01-01
    • 2018-09-21
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    相关资源
    最近更新 更多