gpt4 book ai didi

python - 使用线程/多进程读取多个文件

转载 作者:太空狗 更新时间:2023-10-30 02:10:07 24 4
gpt4 key购买 nike

我目前正在从 FileNameList 的路径列表中提取 .txt 文件,这是有效的。但我的主要问题是,文件太多时速度太慢。

我正在使用这段代码来打印 txt 文件列表,

import os
import sys

#FileNameList is my set of files from my path
for filefolder in FileNameList:
for file in os.listdir(filefolder):
if "txt" in file:
filename = filefolder + "\\" + file
print filename

任何关于拥有线程/多进程并使其快速阅读的帮助或建议都将被接受。提前致谢。

最佳答案

So you mean there is no way to speed this up?, because my scenario is to read bunch of files then read each lines of it and store it to the database

优化的第一条规则是问问自己是否应该打扰。如果您的程序只运行一次或几次优化那是浪费时间。

第二条规则是,在您做任何其他事情之前,测量问题所在;

编写一个简单的程序,顺序读取文件,将它们拆分成行并将它们填充到数据库中。在 分析器 下运行该程序,以查看该程序将大部分时间花在哪里。

只有这样你才能知道程序的哪一部分需要加速。


尽管如此,这里还是有一些提示。

  • 可以使用 mmap 加快文件读取速度。
  • 您可以使用multiprocessing.Pool 将多个文件的读取分散到不同的内核上。但是这些文件中的数据最终将进入不同的进程,并且必须使用 IPC 将其发送回父进程。对于大量数据,这会产生巨大的开销。
  • 在 Python 的 CPython 实现中,一次只有一个线程可以执行 Python 字节码。虽然实际的文件读取不受此限制,但处理结果却受到限制。因此,线程是否会提供改进值得怀疑。
  • 将行填充到数据库中可能始终是一个主要瓶颈,因为这是所有东西汇集在一起​​的地方。这有多大问题取决于数据库。它是在内存中还是在磁盘上,它是否允许多个程序同时更新它,等等。

关于python - 使用线程/多进程读取多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31934382/

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