我有一个处理大量文件的 python 脚本。
对于每个文件,脚本逐行搜索特定的正则表达式模式。如果找到模式,则该行将被复制到日志文件中。
作为示例输入,我向其传递一个包含 42 个小文件和 3 个大文件(每个文件约 1500 行)的文件夹。
脚本处理前两个大文件的速度非常快 - 需要几秒钟的时间。但是到了第三个大文件的时候,速度就慢了,而且越来越慢。
在第三个大文件的中间,每行需要整整一秒,并且速度不断减慢。如果我不停下来,整个运行就要一个小时!
我添加了打印出行号的调试代码 - 这就是我注意到它变得越来越慢的原因,而且它不会卡在某个地方。
我有 20 年的 c 语言和许多其他语言经验,但我是 python 初学者。我可以采取哪些步骤来解决此脚本的问题?
最佳答案
如果您的代码是脚本,您可以运行 cProfile,如下所示 in this answer
python -m cProfile myscript.py
我不知道这是否为您提供了您想要的粒度,否则请查看 The Python Profilers
至于你的代码运行缓慢的实际原因,我怀疑 catastrophic backtracking或者每次模式匹配时打开并附加到日志文件。 Shlemiel The Painter
关于python - 如何解决 python 代码运行缓慢的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30056244/