r - 如何并行化 bash 中调用 R 脚本的嵌套 for 循环

标签 r bash parallel-processing gnu-parallel

是否可以并行化以下代码?

for word in $(cat FileNames.txt)
do 
   for i in {1..22}
   do  
      Rscript assoc_test.R...........

   done >> log.txt
done 

我一直在尝试并行化它,但到目前为止并不幸运。我尝试将 () 放在 Rscript assoc_test.R........... 周围,然后是 & 但它是没有给出结果,并且日志文件结果是空的。任何建议/帮助将不胜感激。 TIA。

最佳答案

您可以更改脚本以输出要运行的命令,并将结果输入到 GNU 并行中:

for word in $(cat FileNames.txt)
do 
   for i in {1..22}
   do  
      echo Rscript assoc_test.R........... \> log.$word.$i
   done
done | parallel -j 4

一些细节:

  • parallel -j 4 将同时运行 4 个作业 - 将 4 替换为您要使用的 CPU 数量。
  • 请注意,我将输出重定向到 log.$word.$i 并使用 \> 转义重定向运算符 >。我需要测试并确保它有效,但重点是,由于您要并行,因此您不想将所有输出混在一起。
  • 确保转义 echo 可能解释的任何其他内容。输出应该是并行可以运行的有效命令行。

作为并行的替代方案,您还可以使用xargs -i。请参阅this question了解更多信息。

关于r - 如何并行化 bash 中调用 R 脚本的嵌套 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57803194/

相关文章:

r - 子集有序组件和相对变量名称

linux - 在 bash 中匹配逗号分隔列表中的单词

ruby - 使用 LaunchControl 运行时 bash 脚本中出现错误

bash - 检测任何列中的增量

c++ - ArrayFire异常(输入类型不同)

c++ - 使用 gdb 进行分布式软件调试

parallel-processing - Julia Distributed 在添加进程时减慢了单核性能的一半

r - 通过 apply R 使用模拟

r - 如何从 R 查询 MongoDB?

r - 将命名向量添加到列表