Подтвердить что ты не робот

Параметр "chunksize" в многопроцессорной обработке Python.Pool.map

Если у меня есть объект пула с двумя процессорами, например:

p=multiprocessing.Pool(2)

и я хочу перебрать список файлов в каталоге и использовать функцию карты

может кто-нибудь объяснить, что такое chunksize этой функции:

p.map(func, iterable[, chunksize])

Если я устанавливаю chunksize, например, 10, это означает, что каждые 10 файлов должны обрабатываться одним процессором?

4b9b3361

Ответ 1

Глядя на документацию для Pool.map, кажется, что вы почти правы: параметр chunksize приведет к тому, что итерабельность будет разделена на куски приблизительно, размер и каждая часть представлена ​​как отдельная задача.

Итак, в вашем примере да, map займет первые 10 (приблизительно), отправьте его как задачу для одного процессора... тогда следующие 10 будут представлены как другая задача и так далее. Обратите внимание, что это не означает, что это заставит процессоры чередовать каждые 10 файлов, вполне возможно, что процессор # 1 получит 1-10 И 11-20, а процессор # 2 получит 21-30 и 31-40.