我有一个脚本可以运行一些数据处理命令 10K 次。
foreach f (folderName/input*.txt)
mycmd $f
end
我已将每个“mycmd $f”的运行时间计时为 0.25 秒。 运行 10K 次,加起来超过 1 小时。 我在 16 核 nehalem 上运行它。 不在剩余的 15 个内核上运行是一种巨大的浪费。
我已经尝试过 & with sleep,不知何故,脚本在大约 3900 次迭代后因警告或错误而终止,见下文。 sleep 时间越短,它死得越快。
foreach f (folderName/input*.txt)
mycmd $f & ; sleep 0.1
end
必须有更好的方法。 注意:我更喜欢 shell 脚本解决方案,我们不要进入 C/C++ 领域。
谢谢
问候
最佳答案
将文件列表传送到
xargs -n 1 -P 16 mycmd
例如:
echo folderName/input*.txt | xargs -n 1 -P 16 mycmd
关于Linux bash 多线程/进程小作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10858922/