GNU并行,带有嵌套的for循环和多个命令

威特

我正在尝试与GNU Parallel同时运行BASH函数的10个实例

BASH功能从图像下载图块,并将它们拼接在一起-首先是单行,然后是每一列-到单个图像文件。

function DOWNLOAD_PAGE {
for PAGE in {0041..0100}
do
                for COLUMN in {0..1}
                        do
                                for ROW in {0..2}
                                do wget -O "$PAGE"_"$COLUMN"_"$ROW".jpg "http://www.webb$PAGE$COLUMN$ROW"
                        done
                convert "$PAGE"_"$COLUMN"_*.jpg -append "$PAGE"__"$COLUMN".jpg
                done
                convert "$PAGE"__*.jpg +append "$PAGE"_done.jpg
        done
}

不幸的是,显而易见的解决方案-第一个是

export -f DOWNLOAD_PAGE
parallel -j10 DOWNLOAD_PAGE

不工作。

有没有一种使用GNU Parallel做到这一点的方法?

奥莱·丹吉(Ole Tange)

函数的某些部分可以被并行化,而其他部分则不能:例如,您不能在下载图像之前附加图像。

function DOWNLOAD_PAGE {
    export PAGE=$1
    for COLUMN in {0..1}
    do
        parallel wget -O "$PAGE"_"$COLUMN"_{}.jpg "http://www.webb$PAGE$COLUMN{}" ::: {0..2}
        convert "$PAGE"_"$COLUMN"_*.jpg -append "$PAGE"__"$COLUMN".jpg
    done
    convert "$PAGE"__*.jpg +append "$PAGE"_done.jpg
}

export -f DOWNLOAD_PAGE
parallel -j10 DOWNLOAD_PAGE ::: {0041..0100}

更加并行化的版本(但更难阅读):

function DOWNLOAD_PAGE {
    export PAGE=$1
    parallel -I // --arg-sep /// parallel wget -O "$PAGE"_//_{}.jpg "http://www.webb$PAGE//{}"\; convert "$PAGE"_"//"_\*.jpg -append "$PAGE"__"//".jpg ::: {0..2} /// {0..1}
    convert "$PAGE"__*.jpg +append "$PAGE"_done.jpg
}

export -f DOWNLOAD_PAGE
parallel -j10 DOWNLOAD_PAGE ::: {0041..0100}

您对GNU Parallel的功能的理解有些误导。考虑遍历教程http://www.gnu.org/software/parallel/parallel_tutorial.html,然后尝试了解示例的工作方式:n1_argument_appending“> http://www.gnu.org/software/parallel/man .html#example__working_as_xargs_ n1 _argument_appending

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

运行带有GNU并行参数的命令

来自分类Dev

带有索引的并行嵌套循环

来自分类Dev

并行嵌套在GNU并行中的循环

来自分类Dev

Julia 1.5中带有嵌套循环的并行分配操作

来自分类Dev

带有“ for”循环的多个“ sed”命令

来自分类Dev

运行带有两个参数且与GNU并行的命令

来自分类Dev

与tbb并行执行多个嵌套循环

来自分类Dev

Gnu Parallel:嵌套并行

来自分类Dev

Bash连续和并行循环/命令

来自分类Dev

GNU并行| 管道命令

来自分类Dev

带有嵌套for循环的脚本

来自分类Dev

GNU是否与for循环并行?

来自分类Dev

打开和关闭带有多个逻辑循环的HTML标签

来自分类Dev

需要 SwiftyJSON 模型和带有嵌套 for 循环的 api 调用,用于带有字典数组的数组

来自分类Dev

带有超时的GNU并行退出过程

来自分类Dev

带有多个命令的规则

来自分类Dev

Gnu并行和多个节点使用rsh而不是ssh

来自分类Dev

在GNU并行环境中使用多个等效命令(多个线程池)处理多个输入

来自分类Dev

带有多个命令的Expect命令

来自分类Dev

GNU并行忽略管道命令

来自分类Dev

如何使用带有嵌套列表的循环?

来自分类Dev

打印带有嵌套循环的棋盘。[Java]

来自分类Dev

比较带有嵌套循环的数组

来自分类Dev

退出带有嵌套循环的shell脚本

来自分类Dev

带有嵌套循环的JQuery异步Promise

来自分类Dev

带有中断的python嵌套循环

来自分类Dev

带有验证的 Python 嵌套循环问题

来自分类Dev

带有局部变量的嵌套循环

来自分类Dev

Python - 带有 CSV 的嵌套循环