gpt4 book ai didi

Python 处理多个文件

转载 作者:行者123 更新时间:2023-11-28 22:47:30 25 4
gpt4 key购买 nike

举个例子,假设我们有 3 个 CSV 文件,每个文件有数百万行:

file_1.csv contains 10 million lines
file_2.csv contains 2.5 million lines
file_3.csv contains 7.1 million lines

我知道我可以使用 Python 的 multiprocessing library并在单独的进程中处理每个文件,每个进程使用一个线程。

另一个想法是像上面那样在单独的进程中处理每个文件,但在每个进程中有多个线程处理文件的 block 。例如:

Process 1
file_1.csv being processed
thread 1 is processing the first 1 million lines
thread 2 is processing the second 1 million lines
etc…
combine thread results

……过程 2 和 3 依此类推。

那么,我的问题是,处理这些文件的最快方法是什么?

最佳答案

使用线程来处理部分文件根本不会提高性能(假设您使用的是 CPython),因为 Global Interpreter Lock .一次只有一个线程可以运行 Python 字节码,所以任何时候你的线程需要做一些事情而不是阻塞 I/O,实际上只有一个线程可以并发运行。因此,您最终基本上是按顺序处理文件,只是在线程之间切换会产生额外的开销。

因此,在您提出的两个选项中,前者的效果会更好。但是,如果您的系统上有 3 个以上的 CPU 核心,您可能会进一步提高性能,方法是拆分文件,以便系统上的每个可用核心都在其自己的进程中处理一个文件 block (从而避免 GIL) .做到这一点的最佳方法取决于您对每个 csv 文件进行的处理类型。您是否将 csv 中的数据放入内存中的数据结构中?在每一行上做某种计算?等等。

关于Python 处理多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26165773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com