Python大目录

Python大目录,python,python-3.x,filesystems,ext4,Python,Python 3.x,Filesystems,Ext4,我正在使用python读取可能包含许多执行跟踪文件的目录。每个文件通常很小(几行,通常小于1Ko) 我的脚本每秒读取几百个文件,但当目录中的文件数超过~60k时,程序会减慢速度,每秒仅读取很少的文件(3/4): def read_traces(path: str): files = glob.glob("*.ktest") traces = [] for f in files: replay_cmd = "KTEST_FILE="

我正在使用python读取可能包含许多执行跟踪文件的目录。每个文件通常很小(几行,通常小于1Ko)

我的脚本每秒读取几百个文件,但当目录中的文件数超过~60k时,程序会减慢速度,每秒仅读取很少的文件(3/4):

def read_traces(path: str):
    files = glob.glob("*.ktest")
    traces = []
    for f in files:             
        replay_cmd = "KTEST_FILE=" + f + " ./replay.bc"

        p = sp.Popen(replay_cmd, stdout=sp.PIPE, stderr=sp.PIPE, shell=True)
        out, _ = p.communicate()
        trace = Trace(f, out.decode("UTF-8"))
        traces.append(trace)
    return traces

这是Python的问题还是文件系统(ext3)的问题?我如何解决这个问题

不看剧本很难知道。如果需要帮助,请发布。使用线程或多处理(映射/减少)解决您的问题。不要以顺序方式处理目录中的所有文件。查看每个文件的实际操作会很有帮助。你是在对文件名执行操作,还是真的打开了它?我用对文件的计算编辑了这篇文章。这是Klee的ktest,我重播每个文件的执行跟踪。