【问题标题】: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 内核数量一样多的进程工作者,并在前一个任务完成后立即执行新任务,直到处理完所有元素。