如何修复 Gnu Parallel 中的 'Unable to open [{2}]' 错误
How to fix 'Unable to open [{2}]' error in Gnu Parallel
我想并行化同时使用两个程序的图像处理步骤。我的代码适用于单个图像,但当我尝试并行化它时,它失败了。
我使用的两个程序是 fx
和 getkey
来自 USGS Integrated Software for Imagers and Spectrometers。我使用 fx
对我的输入图像(在下面的代码中为 'f1' )执行算术运算并将其写入新文件(即 'to' 参数)。 getkey
输出请求关键字的值,在本例中为数字。
在下面的代码中,我从输入图像 f1 中减去 getkey
的输出,并将结果写入由 'to' 参数定义的新文件。此代码按我的预期工作:
fx f1=W1660432760_1_overclocks_average_lwps5.cub to=testing_fx2.cub equation=f1-$(getkey from=W1660432760_1_overclocks_average_lwps5_stats.txt grpname=results keyword=average)
当我尝试并行化它时,问题就来了。下面的代码报错,说 'Unable to open [{2}].'
parallel fx f1={1} to={1.}_minus_avg.cub equation=f1-$(getkey from={2} grpname=results keyword=average) ::: $(find *lwps5.cub) ::: $(find *stats.txt)
我期望的结果是输出图像的像素值比输入图像小 getkey
值。
如果两个输入应该以各种方式组合:
parallel fx f1={1} to={1.}_minus_avg.cub 'equation=f1-$(getkey from={2} grpname=results keyword=average)' ::: *lwps5.cub ::: *stats.txt
如果应该链接两个输入:
parallel fx f1={1} to={1.}_minus_avg.cub 'equation=f1-$(getkey from={2} grpname=results keyword=average)' ::: *lwps5.cub :::+ *stats.txt
如果这些都不能解决您的问题,那么创建一个带有 2 个参数的 shell 函数:
doit() {
arg1=""
arg2=""
# Do all your stuff with getkey and fx
}
export -f doit
# all combinations
parallel doit ::: *lwps5.cub ::: *stats.txt
# or linked
parallel doit ::: *lwps5.cub :::+ *stats.txt
我想并行化同时使用两个程序的图像处理步骤。我的代码适用于单个图像,但当我尝试并行化它时,它失败了。
我使用的两个程序是 fx
和 getkey
来自 USGS Integrated Software for Imagers and Spectrometers。我使用 fx
对我的输入图像(在下面的代码中为 'f1' )执行算术运算并将其写入新文件(即 'to' 参数)。 getkey
输出请求关键字的值,在本例中为数字。
在下面的代码中,我从输入图像 f1 中减去 getkey
的输出,并将结果写入由 'to' 参数定义的新文件。此代码按我的预期工作:
fx f1=W1660432760_1_overclocks_average_lwps5.cub to=testing_fx2.cub equation=f1-$(getkey from=W1660432760_1_overclocks_average_lwps5_stats.txt grpname=results keyword=average)
当我尝试并行化它时,问题就来了。下面的代码报错,说 'Unable to open [{2}].'
parallel fx f1={1} to={1.}_minus_avg.cub equation=f1-$(getkey from={2} grpname=results keyword=average) ::: $(find *lwps5.cub) ::: $(find *stats.txt)
我期望的结果是输出图像的像素值比输入图像小 getkey
值。
如果两个输入应该以各种方式组合:
parallel fx f1={1} to={1.}_minus_avg.cub 'equation=f1-$(getkey from={2} grpname=results keyword=average)' ::: *lwps5.cub ::: *stats.txt
如果应该链接两个输入:
parallel fx f1={1} to={1.}_minus_avg.cub 'equation=f1-$(getkey from={2} grpname=results keyword=average)' ::: *lwps5.cub :::+ *stats.txt
如果这些都不能解决您的问题,那么创建一个带有 2 个参数的 shell 函数:
doit() {
arg1=""
arg2=""
# Do all your stuff with getkey and fx
}
export -f doit
# all combinations
parallel doit ::: *lwps5.cub ::: *stats.txt
# or linked
parallel doit ::: *lwps5.cub :::+ *stats.txt