所以,我有一个9000行的csv文件。我已经读过它并将其存储在带有字符串键m的字典列表中。我想要做的是为每个项list[m]
循环并将其处理为函数processItem(item)
。这个processItem
将返回一个类似csv格式的字符串。我的目的是为列表中的每个项目写出processItem
函数的结果。有没有想过如何做这种多线程方式?
我想我应该将列表分成N个子列表,然后以多线程方式处理这些子列表。每个线程都将返回从子列表处理的字符串,然后将其合并。最后将其写入文件。如何实现?
答案 0 :(得分:5)
这是使用multiprocessing
模块和Pool()
函数的完美示例(请注意,threading
模块不能用于速度)。
您必须在列表的每个元素上应用一个函数,这样可以很容易地并行化。
with Pool() as p:
processed = p.map(processItem, lst)
如果您使用的是Python 2,Pool()
不能用作上下文管理器,但您可以像这样使用它:
p = Pool()
processed = p.map(processItem, lst)
您的processItem()
中的每个元素都会调用您的函数lst
,结果将创建一个新列表processed
(订单会被保留)。
函数Pool()
生成CPU拥有核心的多个流程工作者,并在上一个任务完成后立即执行新任务,直到每个元素都被处理完毕。