【问题标题】:for loop in GNU ParallelGNU Parallel 中的 for 循环
【发布时间】:2015-09-20 21:31:02
【问题描述】:

我正在尝试从网页下载大量文件(其中仅包含一个图像,因此我可以使用简单的 wget),但想使用 GNU Parallel 加快速度。谁能帮我并行化这个for循环?谢谢。

    for i in `seq 1 1000`
    do
    wget -O "$i.jpg" www.somewebsite.com/webpage
    done

【问题讨论】:

  • 在 wget 命令的末尾添加一个空格和&
  • C 风格的 for 循环比在 bash 中使用 seq 更好:for ((i=1; i<=1000; i++))

标签: bash parallel-processing gnu-parallel


【解决方案1】:

你可以这样做:

 seq 1 1000 | parallel wget www.somewebsite.com/webpage/{}.jpg

您还可以使用-P 选项来指定要同时运行的作业数。

你也可以决定使用 curl 代替:

parallel -P 1000 curl -o {}.jpg www.somewebsite.com/webpage/{}.jpg ::: {1..1000}

【讨论】:

  • 没有理由将curl 带入答案中。
  • 最后一点有什么原因吗,::: {1..10000} 是怎么回事?