首页 > 解决方案 > 在 shell 中并行化的最佳方法

问题描述

我有一个需要多次执行的实验并跟踪它的执行时间。

我的 python 代码需要使用不同的输入运行多次,但也需要多次运行相同的输入以获得每个输入的平均执行时间。

我正在考虑使用并行化(我在 bash 中这样做)但我不知道如何处理它,因为我需要跟踪所有内容,然后在图表中表示结果。

我担心的是,如果我想使用命令将所有内容都放在一个文件中,parallel我将拥有无序的数据,因为我无法控制哪个作业首先结束。例如,如果我决定将某个输入的所有输出放在一个文件中(分配给该特定输入),然后从中获取平均值,我最终会得到很多文件,这可能会使下一步变得更加困难。

我不是要代码,我只是想要一个更好的想法(如果可能的话)我可以使用的算法。也许是一种控制由创建的作业(FIFO)顺序的方法,也许是parallel另一种并行化工具......?帮助

标签: macosshellparallel-processing

解决方案


其中之一可以为您工作吗?

parallel --keep-order myexperiment ::: a r g s 1 ::: a r g s 2 > output-in-order
parallel --results mydir/ myexperiment ::: a r g s 1 ::: a r g s 2
parallel --results myfile{1}-{2} myexperiment ::: a r g s 1 ::: a r g s 2
parallel --results myfile.tsv myexperiment ::: a r g s 1 ::: a r g s 2

如果你是科学家,最后一个很有趣,因为它可以被 R 直接读取。


推荐阅读