我正在使用multiprocessing.Pool和apply_async()一起处理大量图像(大约1000张)。
我已将池设置为使用4个进程。
我的问题是处理图像的速率如何根据要处理的项目数而变化。
例如,当池中装有10个项目时,这些项目将在0.5秒内处理。
在1000个项目上运行相同的代码时,将在10秒内处理前10个项目。
这是为什么?我希望完成整个工作的时间会增加,但是不会增加图像处理的速度。
代码如下:
imagelist = [...] # array of images(pixel data)
pool = Pool(processes=4)
for i, image in enumerate(imagelist):
a = pool.apply_async(process, args=(image), callback=postprocess)
我希望无论处理多少项目,图像的处理速度都是恒定的。为什么不呢?