Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GNU Parallel不接受变量python参数_Python_Bash_Gnu Parallel - Fatal编程技术网

GNU Parallel不接受变量python参数

GNU Parallel不接受变量python参数,python,bash,gnu-parallel,Python,Bash,Gnu Parallel,我有一个python代码,可以为我运行模拟,我需要为许多不同的参数(一个字符串、一个整数和另一个stringy整数)运行该代码。我的问题是,当我尝试将其与GNU并行化时,我的参数的一部分无法通过(我的第一个字符串)。可能对此负责的特定线路是: parallel --bar --eta -j14 'python3 compute-heat-capacity-generational-2 $sim {1} {2}' ::: \ $(seq 16) ::: \ ${gens[@]} 其中,我从pyt

我有一个python代码,可以为我运行模拟,我需要为许多不同的参数(一个字符串、一个整数和另一个stringy整数)运行该代码。我的问题是,当我尝试将其与GNU并行化时,我的参数的一部分无法通过(我的第一个字符串)。可能对此负责的特定线路是:

parallel --bar --eta -j14 'python3 compute-heat-capacity-generational-2 $sim {1} {2}' ::: \
$(seq 16) ::: \
${gens[@]}
其中,我从python获得的错误消息是:

回溯(最近一次呼叫最后一次):
文件“compute-heat-capacity-generational-2”,第20行,in

iterNum=int(argv[3])>索引器:列表索引超出范围

因此,我的参数中只有两个经过处理,在我的平行行中分配给
{1}
{2}
的参数。无论出于什么原因,当我尝试使用parallel时,
$sim
似乎无法正常工作

下面编写了完整的脚本,其中我将simulation目录作为输入,循环遍历该目录以解析生成号,然后将这两个脚本交给parallel,在这里我遍历所有生成,并遍历由
${seq 16}

任何关于如何使用parallel的建议都将不胜感激。在过去的几天里,我花了大部分时间阅读手册和示例,但我一直无法解决这个问题。我很确定,问题很简单,我如何给我的参数打上`{}的标签,并向它们提供输入,但我似乎找不到正确的组合来实现这一点

#/bin/bash
echo“选择一个模拟:”
阅读模拟
echo“开始热容计算”
gens=(保存/$sim/isings/*)
#在simulations文件夹中查找所有代,放入阵列中

对于((i=0;i在调用
parallel
之前,请尝试在parallel的参数中使用双引号,或者执行
导出sim

parallel --bar --eta -j14 "python3 compute-heat-capacity-generational-2 $sim {1} {2}" ::: \
$(seq 16) ::: \
${gens[@]}
  • 如果字符串使用单引号(
    ),bash不会展开字符串中的变量
  • 如果您执行导出sim卡的操作,则子进程将看到该变量,并且您的变量稍后将展开

  • 是的!这似乎解决了问题。谢谢!使用了双引号,现在我可以睡觉了,因为我知道我的模拟在一夜之间运行。太好了!晚安;p
    --bar
    意味着
    --eta
    所以
    --eta
    是多余的。哦,这很有意义。谢谢!