Skip to main content
 首页 » 编程设计

python之使用python多线程读写文件

2025年05月04日35haluo1

所以,我有一个 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 拥有的内核一样多的进程工作线程,并在前一个任务完成后立即执行新任务,直到所有元素都已处理。