我正在尝试使用 Python 读取和修改多个文件的每一行。每个文件都有数千到数十万行,因此每个文件只有在处理另一个文件之后才会被处理。我正在尝试读取如下文件:
csvReader = csv.reader(open("file","r")
for row in csvReader:
handleRow(row)
我想使用多线程来使用不同的线程并行读取每个文件,以节省时间。谁能指出它是否有用以及如何实现?
最佳答案
它可能有用,也可能没用——如果所有文件都在同一个驱动器上,并且您已经以最快的速度插入驱动器,那么多路复用只会减慢速度。但如果您没有最大化 I/O,它会加快速度。
至于如何做到这一点,那是微不足道的。将代码包装在采用路径名的函数中,然后使用并发.futures.ThreadPoolExecutor 或 multiprocessing.dummy.Pool,只需一行代码即可将您的函数映射到整个可迭代的路径名:
with ThreadPoolExecutor(4) as executor:
executor.map(func, paths)
还有一件事:如果你不能最大化 I/O 的原因是因为你在每一行上做了太多的 CPU 工作,线程在 Python 中不会有帮助(因为 GIL),但是你可以只使用进程——完全相同的代码,但使用 ProcessorPoolExecutor。
关于python - 使用不同的线程读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19471122/