所以,我有一个 9000 行的 csv 文件。我已经阅读了它并将它存储在一个带有字符串键 m 的字典列表中。我想要做的是循环每个项目 list[m] 并将其处理成一个函数 processItem(item)。此 processItem 将返回一个类似于 csv 格式的字符串。我的目标是为列表中的每个项目编写 processItem 函数的结果。是否知道如何执行这种多线程方式?
我想我应该把列表分成N个子列表,然后以多线程的方式处理这些子列表。每个线程都会返回子列表处理后的字符串,然后合并。最后写入文件。如何实现?
请您参考如下方法:
这是使用 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 拥有的内核一样多的进程工作线程,并在前一个任务完成后立即执行新任务,直到所有元素都已处理。
