使用python

时间:2016-05-16 06:52:24

标签: python multithreading

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

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

1 个答案:

答案 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拥有核心的多个流程工作者,并在上一个任务完成后立即执行新任务,直到每个元素都被处理完毕。