Допустим, у меня есть большой список музыки различной длины, которую нужно преобразовать или изображения разных размеров, которые нужно изменить или что-то в этом роде. Заказ не имеет значения, поэтому он идеально подходит для разделения на несколько процессоров.
Если я использую функцию multiprocessing.Pool map, кажется, что вся работа делится раньше времени и не учитывает тот факт, что некоторые файлы могут занимать больше времени, чем другие.
Что происходит, если у меня есть 12 процессоров... ближе к концу обработки, у 1 или 2 процессоров будет осталось 2 или 3 файла для обработки, в то время как другие процессоры, которые могут использоваться, сидят без дела.
Есть ли какая-то реализация очереди, которая может поддерживать загрузку всех процессоров до тех пор, пока не останется больше работы?