Python:pool.map 和 map 之间的语义差异?

Python: semantic differences between pool.map and map?

我有一个函数接受一个参数,将文件保存到固定目录,然后 returns None。我想使用 multiproccessing.Pool.map 在许多参数上并行执行此函数。这真的适用于没有 return 值的函数吗?

我问是因为 documentationPool.map 等同于内置的 map,但是 map(fcn, arg_list) 直到迭代其结果。在我的例子中,迭代结果是没有意义的,它们是 None.

这方面的文档不正确吗?

Python 的内置 map 在迭代之前不会执行该函数,因为 map 调用的结果是一个生成器...

multiprocessing.Pool.map会立即提交任务执行。

我会说文档有点过时了。内置的 map 一直是一个可迭代对象,但是 Pool.map(仍然)return 是一个列表。因此 multiprocessing 机制 迭代结果 returned,以构建该列表(是的,它们都恰好是 None你的情况,但无论结果如何,都会构建列表。

您也不需要 遍历该列表,但我还是建议您这样做:这样代码就可以稳健地应对未来可能发生变化的版本Pool.map() 也是 return 可迭代对象。