Я пишу что-то, чтобы обработать кучу изображений.Я хотел бы использовать многопроцессорный пул для его ускорения.
При запуске одного и того же кода для двух списков разной длины скорость выполнения функции обработки отличается.
ДляНапример, при запуске его в небольшом списке (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()
Есть идеи?