2010-09-29 2 views
25

Если у меня есть объект пула с 2 процессорами, например:параметр «chunksize» в multiprocessing.Pool.map Пайтона

p=multiprocessing.Pool(2) 

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

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

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

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

ответ

24

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

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

Смежные вопросы