处理大量文件:速度变慢

问题描述

“ ./ data”目录中大约有600,000个文本文件。它们都是1行。 我想将它们合并为1个文件,其中每行应用单引号'括起来。

我编写了如下的python脚本:

#!/usr/bin/env python3

from glob import glob

def main():
    files = glob("data/*")
    for f in files:
        with open(f) as f2:
            print("'" + f2.read() + "'")

if __name__ == "__main__":
    main()

将其保存为merge.py,我可以使用命令获取合并文件

./merge.py > merged.txt

首先,作为效率测试,我运行将for f in files替换为for f in files[:10000]的代码。它在几秒钟内完成。而且我认为,如果我对整个文件运行它(即使用原始的for f in files行),它将在几分钟内完成。然后,我修改该行并运行它。但即使15分钟后仍未完成。我想知道我打开了另一个终端并运行

while true; do date; wc -l merged.txt; sleep 300; done

根据此命令的输出,我的脚本每5分钟处理大约20k个文件(这比我预期的要小得多),并且进程变慢了。

我的脚本只是反复打开一个文件,在标准输出中写一行,然后关闭文件。据我了解,它是在循环的开始还是经过数十万次处理后都没有区别。

是否有任何使流程变慢的原因?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)