【发布时间】:2013-11-02 22:31:17
【问题描述】:
目前,我正忙于高效地运行耗时的模拟。目的是并行运行 4 个模拟,因为它是一个单线程应用程序和一个四核系统。我必须更改 shell 脚本:
./sim -r 1 &
./sim -r 2 &
./sim -r 3 &
./sim -r 4 &
wait
./sim -r 5 &
./sim -r 6 &
./sim -r 7 &
./sim -r 8 &
wait
... (another 112 jobs)
使用此代码会一次又一次地等待。我还尝试将任务分成四个脚本并运行每个脚本,结果是一个脚本完成了,而另一个脚本完成了大约 30% 的剩余工作。我无法预测模拟需要多长时间。
有什么建议可以随时运行 4 次模拟吗?
【问题讨论】:
-
有趣的问题。 AFAIK,它不能在
bash(或 Korn shell、Bourne shell 或 POSIX shell)中完成。您可以等待特定进程(bash)或所有进程(所有进程),但不能一次等待一组进程中的一个。我可能会使用 Perl(或者 Python,也许)来运行;它可以等待任何进程终止,然后启动另一个。