我使用名为process
的命令处理目录中的100个文件,并且我希望尽可能地并行此过程。所以,我在C shell中发出以下命令,效果很好:
foreach F (dir/file*.data)
process $F > $F.processed &
echo $F
end
所有100个进程在后台一次启动,最大限度地利用了我的所有内核。
现在我想一次只使用我的一半核心(4个中的2个)。是否有一种优雅的方式来做到这一点?
答案 0 :(得分:1)
如果你安装了GNU Parallel http://www.gnu.org/software/parallel/,你可以这样做:
parallel -j 50% 'process {} > {}.processed; echo {}' ::: dir/file*.data
您可以通过以下方式安装GNU Parallel:
wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem
观看GNU Parallel的介绍视频了解详情: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1