【问题标题】:Multi threading read and write file using python使用python多线程读写文件
【发布时间】:2016-05-16 15:21:19
【问题描述】:

所以,我有一个 9000 行的 csv 文件。我已阅读它并将其存储在带有字符串键 m 的字典列表中。我想要做的是循环每个项目list[m] 并将其处理成一个函数processItem(item)。这个processItem 将返回一个类似csv 格式的字符串。我的目标是为列表中的每个项目编写processItem 函数的结果。有什么想法如何做这种多线程方式吗?

我认为我应该将列表划分为 N 个子列表,然后以多线程方式处理这些子列表。每个线程将返回从子列表处理的字符串,然后将其合并。最后将其写入文件。如何实现?

【问题讨论】:

    标签: python multithreading


    【解决方案1】:

    这是使用multiprocessing 模块和Pool() 函数的完美示例(注意threading 模块不能用于速度)。

    您必须对列表的每个元素应用一个函数,这样可以轻松实现并行化。

    with Pool() as p:
        processed = p.map(processItem, lst)
    

    如果您使用的是 Python 2,Pool() 不能用作上下文管理器,但您可以像这样使用它:

    p = Pool()
    processed = p.map(processItem, lst)
    

    将为lst 中的每个元素调用您的函数processItem(),结果将创建一个新列表processed(保留顺序)。

    函数Pool() 产生与您的 CPU 内核数量一样多的进程工作者,并在前一个任务完成后立即执行新任务,直到处理完所有元素。

    【讨论】:

    • 感谢您的建议。我将尝试实现这一点。
    猜你喜欢
    • 1970-01-01
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-26
    相关资源
    最近更新 更多