小编Leo*_*rdo的帖子

while循环与splited文件的输入并行

我被困在那.所以我在我的代码中有这个while-read循环需要很长时间,我想在很多处理器中运行它.但是,我想分割输入文件并运行14个循环(因为我有14个线程),每个分割文件一个并行运行.事情是,我不知道如何告诉while循环哪个文件可以使用和使用.

例如,在常规的while-read循环中,我会编码:

while read line
do
   <some code>
done < input file or variable...
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,我想将上面的输入文件拆分为14个文件,并在并行循环中运行14个循环,每个拆分文件一个循环.我试过了 :

split -n 14 input_file
find . -name "xa*" | \
        parallel -j 14 | \
        while read line
        do
        <lot of stuff>
        done
Run Code Online (Sandbox Code Playgroud)

也试过了

split -n 14 input_file
function loop {
            while read line
            do
                <lot of stuff>
            done
}
export -f loop
parallel -j 14 ::: loop 
Run Code Online (Sandbox Code Playgroud)

但是我都没能告诉哪个文件是循环的输入,所以并行会理解"将每个xa*文件并行放入各个循环"

输入文件的示例(字符串列表)

AEYS01000010.10484.12283
CVJT01000011.50.2173
KF625180.1.1799
KT949922.1.1791
LOBZ01000025.54942.57580
Run Code Online (Sandbox Code Playgroud)

编辑

这是代码.输出是一个表(741100行),其中包含有关已经进行的DNA序列比对的一些统计数据.循环采用input_file(没有折断线,从500到~45000行,800Kb不等)进行DNA序列分析,逐行读取并查找每个对应的数据库中的完整分类(~45000行) .然后,它做了一些总和/分裂.输出是.tsv,看起来像这样(序列"KF625180.1.1799"的示例):

Rate of taxonomies for this sequence …
Run Code Online (Sandbox Code Playgroud)

parallel-processing bash while-loop

5
推荐指数
1
解决办法
151
查看次数

标签 统计

bash ×1

parallel-processing ×1

while-loop ×1