我有一个python脚本,它运行在一个状态缩写列表作为其单个参数,以及一个包含所有状态缩写字符串的文本文件。
正常通话是......
$ mypy.py "AK"
...在阿拉斯加运行脚本。
我目前正在使用以下命令在从statelist.txt文件中获取的每个州名缩写上运行脚本:
$ cat statelist.txt | xargs -n 1 ./mypy.py
我现在想要并行化执行,GNU Parallels看起来是正确的选择。我看到from here这应该是替换xargs -n1
的语法:
$ find . -name '*.html' | parallel gzip --best
所以,我的尝试是
$ cat statelist.txt | parallel python mypy.py
和
$ cat statelist.txt | parallel python mypy.py {}
但这两个都在回归:
/bin/bash: mypy.py: command not found
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'AK' is not defined
似乎也许是在没有引用它的情况下传递它?但是,当我在“{}”中添加引号时,它会传入一个文字“{}”。
答案 0 :(得分:3)
cat statelist.txt | parallel --gnu python mypy.py
如果没有--gnu
,GNU parallel可能会选择使用相同的名称来模拟旧工具(Tollef的并行)。 --tollef
是许多发行版的默认行为,这也是您的其他有效GNU样式调用失败的原因。
PS:您的xargs
也可能有-C
或-P
进行并行化。