multiprocessing.Pool.map中的"chunksize"参数

70 投票
1 回答
72100 浏览
提问于 2025-04-16 04:45

假设我有一个包含两个处理器的池对象:

p=multiprocessing.Pool(2)

然后我想要遍历一个文件夹里的文件列表,并使用map函数。

有人能解释一下这个函数的chunksize是什么吗:

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

如果我把chunksize设置为10,这是不是意味着每10个文件会用一个处理器来处理?

1 个回答

60

看一下关于 Pool.map 的说明,你的理解基本正确:chunksize 这个参数会把你要处理的数据分成大约那么大的几块,每一块会被当作一个单独的任务提交。

所以在你的例子中,map 会先处理前10个(大约),把它们作为一个任务交给一个处理器……然后接下来的10个会作为另一个任务提交,依此类推。需要注意的是,这并不意味着处理器每处理10个文件就会换一次,实际上处理器#1可能会处理1-10和11-20,而处理器#2则处理21-30和31-40。

撰写回答