2016-07-29 59 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/ =}'