Parallel processing ImageMagick转换和GNU并行在一起

Parallel processing ImageMagick转换和GNU并行在一起,parallel-processing,imagemagick,gnu,imagemagick-convert,Parallel Processing,Imagemagick,Gnu,Imagemagick Convert,我想加快以下命令的速度: convert -limit memory 64 -limit map 128 -antialias -delay 1x2 final/*.png movie.mp4 我见过其他同时使用parallel和convert的地方,所以我想知道如何使用上面的命令使其工作。如果缩小尺寸是一个选项,是的,您可以使用GNU parallel轻松地做到这一点 parallel -j 8 convert {} -resize ... {} ::: *.png parallel co

我想加快以下命令的速度:

convert -limit memory 64 -limit map 128 -antialias -delay 1x2 final/*.png movie.mp4

我见过其他同时使用parallel和convert的地方,所以我想知道如何使用上面的命令使其工作。

如果缩小尺寸是一个选项,是的,您可以使用GNU parallel轻松地做到这一点

parallel -j 8 convert {} -resize ... {} ::: *.png
parallel convert {} -resize 2000x1200! {} ::: *.png
其中,
{}
代表文件名,要处理的文件列在
后面

-j
给出并行运行的作业数

我刚刚创建了100个10000 x 8000的PNG,并使用

#!/bin/bash
for f in *.png; do
    convert $f -resize 2000x1200! $f
done
然后,同样的原始图像再次出现,但与GNU并行

parallel -j 8 convert {} -resize ... {} ::: *.png
parallel convert {} -resize 2000x1200! {} ::: *.png

花了3分40秒。随后,将这100个
PNG
s制作成一部电影花了52秒。

我怀疑这不能轻易地与GNU并行化,因为本质上,您只有一个进程(即一个
convert
),而GNU Parallel擅长将多个进程分散到多个CPU核上。您有多少
PNG
文件?目前需要多长时间?@MarkSetchell目前处理约100幅10000x8000像素的图像需要一个多小时。我可能会尝试对图像进行下采样,看看这是否会加快速度。谢谢!Parallel允许我将输出命名为与输入相同的名称吗?这种语法至少可以说很奇怪。你可以选择。您可以使用
convert{}将输出命名为与输入相同的名称。。。{}
,或者如果您执行
转换{},您可以使用say
.jpg
替换扩展名而不是
.png
。。。{.}jpg
,或者您可以使用
convert{}。。。new/{}
使用Parallel时的性能大约是使用for循环时的两倍。再次感谢您抽出时间帮我看一下这个!杰出的谢谢你的反馈。