Bha*_*ata 1 python multithreading
所以,我有一个9000行的csv文件.我已经读过它并将其存储在带有字符串键m的字典列表中.我想要做的是循环每个项目list[m]并将其处理成一个函数processItem(item).这processItem将返回一个类似csv格式的字符串.我的目标是为processItem列表中的每个项目编写函数的结果.有什么想法如何做这种多线程方式?
我想我应该将列表分成N个子列表,然后以多线程方式处理这些子列表.每个线程都将返回从子列表处理的字符串,然后将其合并.最后将其写入文件.如何实现?
这是使用multiprocessing模块和Pool()功能的完美示例(请注意,threading模块不能用于速度).
您必须在列表的每个元素上应用函数,因此可以轻松并行化.
with Pool() as p:
processed = p.map(processItem, lst)
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Python 2,Pool()则不能用作上下文管理器,但您可以像这样使用它:
p = Pool()
processed = p.map(processItem, lst)
Run Code Online (Sandbox Code Playgroud)
您的函数processItem()将调用您的每个元素,lst结果将创建一个新列表processed(保留订单).
该函数Pool()产生与CPU具有内核的许多进程工作者,并且在前一个完成后立即执行新任务,直到每个元素都已处理完毕.