2010-09-29 6 views
25

Si tengo un objeto de la piscina con 2 procesadores por ejemplo:parámetro "chunksize" en multiprocessing.Pool.map de Python

p=multiprocessing.Pool(2) 

y quiero iterar sobre una lista de archivos en el directorio y el uso de la función de mapa

podría alguien explicar lo que es la chunksize de esta función:

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

Si fijo el chunksize por ejemplo a 10 ¿eso significa que cada 10 archivos deben procesarse con uno proces sor?

Respuesta

24

Mirando el documentation for Pool.map parece que está casi correcta: el parámetro chunksize hará que el iterable que ser dividido en trozos de aproximadamente ese tamaño, y cada pieza se somete como una tarea independiente.

Por lo tanto, en su ejemplo, sí, map tomará los primeros 10 (aproximadamente), lo presentará como una tarea para un solo procesador ... luego los 10 siguientes se enviarán como otra tarea, y así sucesivamente. Tenga en cuenta que esto no significa que esto hará que los procesadores alternen cada 10 archivos, es bastante posible que el procesador n. ° 1 termine obteniendo 1-10 Y 11-20, y el procesador n. ° 2 obtenga 21-30 y 31-40.

Cuestiones relacionadas