【问题标题】:Knowing how many task have been completed in Pool知道在 Pool 中完成了多少任务
【发布时间】:2014-12-11 11:09:37
【问题描述】:

我正在使用 Python 的 multiprocessing with map 来处理大量列表 这是概述

pool = ThreadPool(4) someList #About 300k elements here results = pool.map(someMethod,someList)

python 是否可以打印出处理 10k 个元素的报告?

【问题讨论】:

    标签: python multithreading pool python-multithreading


    【解决方案1】:

    据我所知,映射的重点是每个元素调用的函数对于每个元素都是相同的。但是您可以稍微修改一下 - 只需将索引与您的元素一起传递:

    someListWithIndices = [{'index': i, 'data': x} for i,x in enumerate(someList)]
    

    现在您需要调整 someMethod 以使用给定字典中的数据字段并对提供的新索引做一些事情。

    您可能不会得到您想要的结果(每 10k 个元素精确打印一次),但如果您想大致了解您正在取得的进展,这可能就是您正在寻找的东西。

    【讨论】:

    • 对不起,您的 sn-p 中有一些错误。它说 someListWithIndices = [{index: i, data: x} for i,x in enumerate(someList)] NameError: global name 'index' is not defined
    • 很抱歉。我会编辑我的答案。它现在应该可以工作了。我忘记了字典键周围的撇号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多