【发布时间】:2010-09-29 14:22:45
【问题描述】:
例如,如果我有一个带有 2 个处理器的池对象:
p=multiprocessing.Pool(2)
我想遍历目录中的文件列表并使用 map 函数
谁能解释一下这个函数的块大小是多少:
p.map(func, iterable[, chunksize])
如果我将 chunksize 例如设置为 10,这是否意味着每 10 个文件都应该使用一个处理器进行处理?
【问题讨论】:
例如,如果我有一个带有 2 个处理器的池对象:
p=multiprocessing.Pool(2)
我想遍历目录中的文件列表并使用 map 函数
谁能解释一下这个函数的块大小是多少:
p.map(func, iterable[, chunksize])
如果我将 chunksize 例如设置为 10,这是否意味着每 10 个文件都应该使用一个处理器进行处理?
【问题讨论】:
查看documentation for Pool.map,您似乎几乎是正确的:chunksize 参数将导致可迭代对象被拆分为 大约 大小的片段,并且每个片段都作为单独的任务。
所以在您的示例中,是的,map 将采用前 10 个(大约),将其作为单个处理器的任务提交......然后接下来的 10 个将作为另一个任务提交,依此类推。请注意,这并不意味着这会使处理器每 10 个文件交替一次,很有可能处理器 #1 最终得到 1-10 和 11-20,而处理器 #2 得到 21-30 和 31-40。
【讨论】: