【问题标题】:How to make gnu-parallel split multiple input files如何使 gnu 并行拆分多个输入文件
【发布时间】:2013-09-08 11:01:52
【问题描述】:

我有一个脚本,它接受三个参数并像这样运行:

myscript.sh input1.fa input2.fa out.txt

脚本从input1.fainput2.fa 中各读取一行,进行一些比较,然后将结果写入out.txt。要求两个输入具有相同的行数,并且out.txt 在脚本完成后也将具有相同的行数。

是否可以使用 GNU parallel 并行化?

我不关心输出与输入的顺序不同,但我确实需要将input1.faith 行与input2.faith 行进行比较。此外,如果我得到多个输出文件(如output{#})而不是一个,这是可以接受的——我将cat 它们放在一起。

我找到了this 主题,但答案并不是我想要的。 我知道我可以split 两个输入文件并使用xargs 成对并行处理它们,但如果可能的话,我想在一行中执行此操作...

【问题讨论】:

    标签: linux gnu-parallel


    【解决方案1】:

    如果您可以更改 myscript.sh,使其从管道读取并写入管道,您可以这样做:

    paste input1.fa input2.fa | parallel --pipe myscript.sh > out.txt
    

    所以在 myscript 中,您需要从 STDIN 读取并在 TAB 上拆分以从 input1 和 input2 获取输入。

    【讨论】:

    • 聪明!如果 myscript.sh 处理和输出到 STDOUT 比 paste 遍历整个文件需要更多时间,这将更快,对吗?换个说法,如果myscript.shpaste 一样快,那么就没有性能提升,对吗?
    • 粘贴相当快,所以限制因素可能是平行的。
    猜你喜欢
    • 2013-02-15
    • 2023-03-14
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多