我正在写一些东西来处理一堆图像。我想使用一个多处理池来加速它。
在两个不同长度的列表上运行相同的代码时,处理功能完成的速率不同。
例如,在小列表(4张图像)上运行时,基本上立即并同时处理了四个图像,但是在大列表(1000张)上运行时,进程似乎按顺序运行。列表中的前四张图像大约需要4秒钟才能完成。
为什么池突然开始按顺序处理事情?
这是我的代码:
def func(*args):
... # complex image processing
frames = np.array([...]) # array of images (pixel data)
noise = np.array([...]) # single image (pixel data)
output_path = "some_path"
pool = Pool(processes=4)
for i, img in enumerate(frames):
noise = np.array([...])
a = pool.apply_async(func, args=(i, img, output_path, noise)
pool.close()
pool.join()
有什么想法吗?