2016-05-16 31 views
1

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

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

回答

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具有核心,并且在前一个完成后立即执行新任务,直到处理完每个元素。

+0

谢谢您的建议。我会尽力实现这一点。 – Bharata