2016-07-29 35 views
0

我想在64核心机器上处理2000个文件。我有一个python脚本foo.py我像这样运行:如何在没有GNU并行的bash中并行运行任务

cat file0000.txt|./foo.py > out0000.txt 

理想我想分裂的2000个文件file0000.txt到file01999.txt成40集的大小50的每个并在每个集运行foo.py平行。对于套1:4,满分40这将是下面的等价:

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,我没有访问。

+0

是什么'xargs'和'-P max-procs'选项的问题? – Alper

+0

@Alper这可能是答案,但我从来没有使用它。你会如何使用它来解决我的问题? – eleanora

+1

就像'ls -1 | xargs -I {} -P 5 sh -c“cat {} | ./foo.py> out {} .txt”',注意:'ls -1'应该列出您的输入文件并更改'-P 5'随你便。 – Alper

回答

1

按照评论:做一个个人安装你被允许做的,如果你被允许运行你自己的脚本GNU并行的:

./configure --prefix=$HOME && make && make install 

然后:

ls | ~/bin/parallel 'cat {} | ./foo.py > {= s/file/out/ =}'