我使用 bash 脚本通过使用 &
符号在后台运行 C++ 程序来利用多核。 (我是一名从事蒙特卡洛模拟的数学家)。
这样我就可以在后台多次运行 C++ 程序。例如:
for x in $(seq 1 1 100)
do
./program_name &
done
有时program_name
会运行得很快,有时会运行得很慢。这是随机的,不可能提前知道。这引发了我的问题:
我该如何做到这一点,以便在任何给定时间同时运行的作业不会超过 4 个? 假设目前有 4 个作业正在运行。我希望一个完成后,下一个就开始。
最佳答案
在 GNU、FreeBSD 和 OSX 上,您可以使用 xargs
:
echo {1..100} | xargs -n 1 -P 4 ./program_name
或者,您可以安装并使用 GNU Parallel,它正是为此类事情而设计的(对于 4 个作业而不是 1 个作业/核心,添加 -j 4
):
parallel --gnu ./program_name ::: {1..100}
关于bash - 如何在后台最多运行 4 个作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26513491/