如果我有一个带有2个处理器的池对象,例如:
p=multiprocessing.Pool(2)
我想迭代目录上的文件列表并使用map函数
有人可以解释这个函数的块大小是什么:
p.map(func, iterable[, chunksize])
如果我将chunksize设置为10,那意味着每10个文件应该用一个处理器处理吗?
答案 0 :(得分:35)
查看documentation for Pool.map看起来你几乎是正确的:chunksize
参数会导致迭代被分割成大约那个大小的碎片,每个碎片是作为一项单独的任务提交的。
因此,在您的示例中,是的,map
将占用前10个(大约),将其作为单个处理器的任务提交...然后将下一个10作为另一个任务提交,依此类推。请注意,这并不意味着这将使处理器每10个文件交替一次,处理器#1很可能最终得到1-10和11-20,处理器#2得到21-30和31-40。 / p>