我想在一台64核的机器上处理2000个文件。我有一个python脚本foo.py
,运行方式如下:
cat file0000.txt|./foo.py > out0000.txt
理想情况下,我会将2000个文件file0000.txt到file01999.txt拆分为40个集合,每个集合的大小为50,并在每个集合上并行运行foo.py。对于40个集合中的1到4,这将等同于以下内容:
cat file00[0-4][0-9] |./foo.py > outfile1.txt &
cat file00[5-9][0-9] |./foo.py > outfile2.txt &
cat file01[0-4][0-9] |./foo.py > outfile3.txt &
cat file01[5-9][0-9] |./foo.py > outfile4.txt &
遗憾的是,我运行这段代码的系统没有parallel
,所以我不得不在没有这个非常有用的工具的情况下完成这项工作。
Bash script processing commands in parallel看起来很相似,但最流行的答案并不直接相关,第二个最流行的答案使用的是parallel
,我无法访问它。
发布于 2016-07-30 15:39:33
根据评论:执行GNU Parallel的个人安装,如果您被允许运行自己的脚本,则可以这样做:
./configure --prefix=$HOME && make && make install
然后:
ls | ~/bin/parallel 'cat {} | ./foo.py > {= s/file/out/ =}'
https://stackoverflow.com/questions/38653190
复制相似问题