我在python中有这样一个命令:
Python my_prog in1.fa ins.fa out1.fa
Python my_prog in2.fa ins.fa out2.fa
Python my_prog in3.fa ins.fa out3.fa
我使用了GNU parallel的并行命令,并在一个文件IN.fa中汇编了in1.fa,in2.fa和in3.fa中的文件。 我的问题是我不知道如何在并行命令中放置另一个或更多的文件。 这是我的命令:
cat IN.fa | parallel -j 20 --cat --pipe --block 3M --recstart '>' time python my_prog.py
如何在Parallel请求中创建几个参数?
答案 0 :(得分:1)
让我们假设my_prog
可以从stdin读取并将输出发送到stdout并且它只需要一个参数(ins.fa
):
parallel --pipepart -a in.fa --block 3M Python my_prog ins.fa > out.fa
如果my_prog
无法从stdin读取,而是从命名管道(fifo)读取,则可以使用:
parallel --fifo --pipepart -a in.fa Python my_prog {} ins.fa > out.fa
如果my_prog
无法读取fifo,只能读取实际文件,则可以使用:
parallel --cat --pipepart -a in.fa Python my_prog {} ins.fa > out.fa
如果my_prog
无法输出到stdout,但可以输出到fifo,您可以经常使用:
parallel --cat --pipepart -a in.fa Python my_prog {} ins.fa {#}.out /dev/stdout > out.fa
或者:
parallel --cat --pipepart -a in.fa Python my_prog {} ins.fa {#}.out '>(cat)' > out.fa
如果my_prog
无法输出到fifo,则需要将其输出到唯一命名的文件,然后可以cat
将其删除。在这里,我们使用序列号来创建一个唯一的文件。
parallel --cat --pipepart -a in.fa Python my_prog {} ins.fa {#}.out '; cat {#}.out; rm {#}.out' > out.fa
你真的应该考虑完成本教程。它将回答这个问题以及所以许多其他问题:man parallel_tutorial