Linux bash 多线程/进程小作业

标签 linux multithreading bash shell multiprocessing

我有一个脚本可以运行一些数据处理命令 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/

相关文章:

linux - Shell:将带有参数的函数作为函数参数传递

bash 命令行中的自定义 readline 函数?

html - 寻求一种紧凑格式的 HTML 电子书,以便在 Linux 下离线阅读

c# - 使用WebClient下载多个文件时出现无限循环

c++ - `decay_copy` 对象的构造函数中的 `std::thread` 有何作用?

java - 随机类线程安全吗?

bash - 在crontab中调用时,带有hive命令的shell脚本未将数据写入文件

linux - 命令行参数有问题

Android NDK 无法交叉编译 SQLite - crtend_so.o : No such file or directory

c# - 在 linux box 中托管 .net API