Я использую python для чтения каталога, содержащего потенциально много файлов трассировки выполнения. Каждый файл обычно небольшой (несколько строк, обычно меньше 1 КБ).
Мой сценарий считывает несколько сотен файлов в секунду, но когда количество файлов в каталоге превышает ~ 60 КБ, программа замедляется и только несколько файлов (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)? Как я могу решить это замедление?