【发布时间】:2012-06-02 00:35:22
【问题描述】:
我有一个脚本可以运行一些数据处理命令 10K 次。
foreach f (folderName/input*.txt)
mycmd $f
end
我已将每个“mycmd $f”的运行时间定为 0.25 秒。 运行 10K 次,加起来超过 1 小时。 我在 16 核 nehalem 上运行它。 不在剩下的 15 个内核上运行是一种巨大的浪费。
我已经尝试过睡眠,但不知何故,脚本在 3900 次迭代左右因警告或错误而死,见下文。睡眠时间越短,死得越快。
foreach f (folderName/input*.txt)
mycmd $f & ; sleep 0.1
end
必须有更好的方法。 注意:我更喜欢 shell 脚本解决方案,我们不要在 C/C++ 领域徘徊。
谢谢
问候
【问题讨论】:
-
错误是什么?此外,您将使用所有 16 个内核,除非您以某种方式以自定义方式设置了亲和力。无论 [mycmd] 实际在做什么,速度都很慢。
-
您可能产生了太多进程。睡眠时间越短,您在完成之前启动的进程就越多。
-
这看起来像 PHP 或 Perl 而不是 Bash。这是什么?
标签: linux multithreading bash shell multiprocessing