Parallel processing 如何使用gnu并行处理带有两个输入的脚本?

Parallel processing 如何使用gnu并行处理带有两个输入的脚本?,parallel-processing,gnu-parallel,Parallel Processing,Gnu Parallel,我尝试运行一个包含两个输入的Python脚本,如下所示。我得到了大约300个这两个输入,所以我想知道是否有人可以建议如何并行运行它们 单次运行如下所示: python stable.py KOG_1.fan KOG_1.fasta > KOG_1.stable 我的并行测试不起作用: ls *.fan; ls *.fasta | parallel python stable.py {} {} > {.}.stable 但是我如何指定is必须与\u 1.fan和\u 1.fasta

我尝试运行一个包含两个输入的Python脚本,如下所示。我得到了大约300个这两个输入,所以我想知道是否有人可以建议如何并行运行它们

单次运行如下所示:

python stable.py KOG_1.fan KOG_1.fasta > KOG_1.stable
我的并行测试不起作用:

ls *.fan; ls *.fasta | parallel python stable.py {} {} > {.}.stable

但是我如何指定is必须与
\u 1.fan
\u 1.fasta一起运行;然后,
\u 2.风扇
\u 1.fasta
等等。。。在
\u 300.fan
\u 300.fasta

之前,我建议您将此任务分为两个步骤:

  • 创建包含所有要运行的命令的作业文件 平行。 您需要创建一个文本文件
    jobs.txt
    ,该文件应类似于下面的文件:

    python stable.py KOG_1.fan KOG_1.fasta > KOG_1.stable
    python stable.py KOG_2.fan KOG_2.fasta > KOG_2.stable
    python stable.py KOG_3.fan KOG_3.fasta > KOG_3.stable
    python stable.py KOG_4.fan KOG_4.fasta > KOG_4.stable
    ...
    python stable.py KOG_300.fan KOG_300.fasta > KOG_300.stable
    
    如果您的所有文件都以KOG为前缀,则可以通过以下方式构建此文件:

    for I in `seq 300`; do echo "python stable.py KOG_$I.fan KOG_$I.fasta > KOG_$I.stable" >> jobs.txt; done;
    
  • 使用作业文件并行运行

    获得作业文件后,只需运行以下命令:

    parallel -j4 < jobs.txt    
    
    parallel-j4
    请注意,
    -j4
    表示作业文件中最多有4个命令将并行运行。您可以根据计算机上可用的内核数进行调整


  • 这不是一个真正的Python问题,而是一个关于GNU并行的问题。如果所有文件的前缀都是“KOG_u”,则可以尝试此操作:

    重定向(
    “>”
    )周围的引号很重要,除非您希望将所有输出都放在一个文件中

    要处理通用前缀,请执行以下操作:

    ls *fan *fasta | parallel ---max-lines=2 python stable.py {1} {2} ">" {1.}.stable
    
    这使用
    -max lines
    选项为每个命令获取2行。当然,只有当
    *.fan
    *.fasta
    文件匹配时,这才有效,即每个文件必须有相同的编号,并且这些编号需要匹配,否则您将最终配对不应该配对的文件。如果这是一个问题,您可以想出一个命令,该命令将更可靠地将成对数据馈送到
    并行

    尝试:

    parallel python stable.py {} {.}.fasta '>' {.}.stable ::: *fan
    

    第二次应该是_2.fasta吗?删除无用的短语。它们已被弃用,因此,请不要重新添加它们。谢谢。我会修正这项质询。是的,这确实是一个GNU的平行问题。我是GNU新手,但我发现它非常有用。我使用的是mac,所以试着切换GNU-sed之类的基于GNU的东西。非常感谢你的一行代码,它通过使用seq 1300工作得非常完美。幸运的是,我所有的文件都有相同的前缀KOG_u,并且也是成对的。你给了我一个美好的开始。谢谢你的回复。我尝试了选项1,效果非常好!
    parallel python stable.py {} {.}.fasta '>' {.}.stable ::: *fan