Process 如何限制C shell启动的后台进程?

Process 如何限制C shell启动的后台进程?,process,background,parallel-processing,csh,Process,Background,Parallel Processing,Csh,我用一个名为process的命令在一个目录中处理100个文件,我希望尽可能地并行这个过程。因此,我在C shell中发出了以下命令,效果非常好: foreach F (dir/file*.data) process $F > $F.processed & echo $F end 所有100个进程在后台同时启动,最大限度地利用我的所有核心 现在我只想一次使用一半的内核(4个内核中的2个)。有没有一种优雅的方法可以做到这一点?如果您安装了GNU并行,您可以做到: paralle

我用一个名为
process
的命令在一个目录中处理100个文件,我希望尽可能地并行这个过程。因此,我在C shell中发出了以下命令,效果非常好:

foreach F (dir/file*.data)

process $F > $F.processed &

echo $F

end
所有100个进程在后台同时启动,最大限度地利用我的所有核心

现在我只想一次使用一半的内核(4个内核中的2个)。有没有一种优雅的方法可以做到这一点?

如果您安装了GNU并行,您可以做到:

parallel -j 50% 'process {} > {}.processed; echo {}' ::: dir/file*.data
您可以通过以下方式安装GNU并行:

wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem
观看GNU Parallel的介绍视频,了解更多信息:

在此处搜索有关xargs的信息。祝你好运,这很有效。parallel是一个perl脚本,在我的mac笔记本电脑和linux机器上运行良好。。问题很好地解决了。谢谢