2

我刚刚发现了 GNU 并行,我在运行一个简单的并行任务时遇到了一些麻烦。我有一个在多个值上运行的模拟,我想将它拆分为使用命令行参数并行运行。从docs看来,您似乎可以parallel mycommand :::: myargfile在其中myargfile并行运行包含您想要提供命令的各种参数。但是,我没有看到任何关于如何列出 args 的信息,并假设myargfile像这样可以工作:

--pmin 0 --pmax 0.1
--pmin 0.1 --pmax 0.2
...

mycommand --pmin 0 --pmax 0.1执行没有问题。但是当我运行时,parallel mycommand :::: myargfile我得到error: unknown option pmin 0 --pmax 0.1(捕获并解码礼貌提升程序选项)。 parallel echo :::: myargfile正确打印出参数。就好像它们被包装在一个程序无法读取的字符串中,并且不像它们来自标准 bash 脚本一样。

这是怎么回事?我怎样才能使这项工作?

4

2 回答 2

1

在@DmitriChubarov 链接到https://stackoverflow.com/a/6258206/1328439之后,我发现我缺少colsep标志:

parallel --colsep ' ' mycommand :::: myargfile

成功执行。

于 2013-01-20T20:47:47.760 回答
0

在浏览了手册和帮助页面后,我想出了这个例子。也许它会拯救那里的人。:)

#!/usr/bin/env bash

COMMANDS=(
  "cnn -a mode=flat"
  "cnn -a mode=xxx"
  "cnn_x -a mode=extreme"
)

parallel --verbose --progress --colsep ' ' scrapy crawl {.} ::: "${COMMANDS[@]}"
于 2016-09-07T13:23:24.490 回答