【问题标题】:Python: semantic differences between pool.map and map?Python:pool.map 和 map 之间的语义差异?
【发布时间】:2022-01-03 05:36:33
【问题描述】:

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

我问是因为documentationPool.map 等效于内置map,但map(fcn, arg_list) 在其结果被迭代之前实际上并不执行函数调用。在我的情况下,迭代结果是没有意义的,即None

这方面的文档不正确吗?

【问题讨论】:

    标签: python multiprocessing documentation


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我会说文档有点过时了。内置的 map 一路上变成了可迭代的,但 Pool.map (仍然)返回一个列表。因此,multiprocessing 机器 迭代返回的结果,以构建该列表(是的,在您的情况下,它们都恰好是 None,但无论结果是)。

      您也需要遍历该列表,但我建议无论如何都要这样做:然后代码将很强大,例如,可能会更改 Pool.map() 的未来版本返回一个可迭代对象。

      【讨论】:

        猜你喜欢
        • 2016-05-14
        • 2021-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-22
        • 2019-06-19
        • 2011-09-03
        相关资源
        最近更新 更多