【发布时间】:2019-09-28 17:36:24
【问题描述】:
如果我创建 6 个 graphicsmagick 批处理文件来转换 35k 图像,这就是我在 htop 中看到的:
为什么不使用更多线程?我猜这两个线程甚至都在同一个内核上(具有超线程的 4 核英特尔)。我在网上找不到关于此的 graphicsmagick 配置。我会责怪我的操作系统调度不当吗?
gm 手册页中唯一相关的选项 -limit <type> <value> 是每个图像的资源限制,而我正在寻找一种方法来增加用于多个图像而不是单个图像的线程数。
确实,graphicsmagick 关于并行性的唯一说法是关于OpenMP(这似乎是关于多线程单图像处理)。所以也许没有支持我正在尝试做的事情。我的问题可能更笼统:“如果我启动多个gm 实例,为什么它们都在同一个线程上运行?”我不确定这是操作系统问题还是gm 问题。
批处理文件中的每一行是:
convert in/file1.jpeg -fuzz 10% -trim -scale 112x112^ -gravity center -extent 112x112 -quality 100 out/file2.jpeg
我使用以下命令运行批处理文件:gm batch -echo on -feedback on data/convert/simple_crop_batchfile_2.txt
我在 GraphicsMagick 1.3.18 2013-03-10 Q8 和 Ubuntu 14.10 上,当我使用 apt-get 升级时告诉我:Calculating upgrade... graphicsmagick is already the newest version
我在这里的故事确实表明了使用多个批处理文件毫无意义(尽管同时使用 2 个超过 1 个批处理文件的整体处理时间加快了 30%)
【问题讨论】:
标签: multithreading graphicsmagick