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