我正在尝试运行具有两个输入的Python脚本,如下所示。我得到了这两个输入中的大约300个,所以我想知道是否有人可以建议如何在并行中运行它们。
单次运行如下所示:
python stable.py KOG_1.fan KOG_1.fasta > KOG_1.stable我的并行测试不起作用:
ls *.fan; ls *.fasta | parallel python stable.py {} {} > {.}.stable但我如何指定它必须与_1.fan和_1.fasta一起运行;然后与_2.fan和_1.fasta等一起运行……直到_300.fan和_300.fasta。
发布于 2016-02-05 21:20:48
这不是一个真正的Python问题,这是一个关于GNU并行的问题。如果所有文件都以“KOG_”为前缀,您可以尝试这样做:
seq 1 300 | parallel python stable.py KOG_{}.fan KOG_{}.fasta ">" KOG_{.}.stable重定向(">")两边的引号很重要,除非您希望将所有输出放在一个文件中。
要处理通用前缀,请执行以下操作:
ls *fan *fasta | parallel ---max-lines=2 python stable.py {1} {2} ">" {1.}.stable这将使用-max-lines选项为每个命令使用2行代码。当然,这只有在*.fan和*.fasta文件匹配的情况下才有效,即每个文件必须有相同的数量,并且数量需要匹配,否则您最终会将不应该配对的文件配对。如果这是一个问题,您可以找出一个命令,该命令可以更有力地将对提供给parallel。
发布于 2016-02-06 02:29:22
尝试:
parallel python stable.py {} {.}.fasta '>' {.}.stable ::: *fan发布于 2016-02-05 21:09:11
我建议您将此任务分成两个步骤:
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为前缀,则可以这样构建此文件:
对于I in python;使用作业文件执行echo“done;
一旦您有了作业文件,您只需要运行以下命令:
parallel -j4 < jobs.txtNote -j4表示作业文件中最多有4个命令将并行运行。您可以根据计算机上可用内核的数量进行调整。
https://stackoverflow.com/questions/35224003
复制相似问题