如何解决非常慢的python代码

时间:2015-05-05 14:47:36

标签: python performance python-2.7

我有一个处理大量文件的python脚本。

对于每个文件,脚本逐行进行,搜索特定的RegEx模式。如果找到模式,该行将被复制到日志文件中。

作为示例输入,我传递的文件夹包含42个小文件和3个大文件(每个约1500行)。

脚本可以非常快速地处理前两个大文件 - 它们需要几秒钟。但是当它到达第三个大文件时,它会减慢速度,并且速度越来越慢。

在第三个大文件的中间,每行需要一整秒,并且它会一直减速。如果我不停止它,整个运行需要一个小时!

我添加了打印出行号的调试代码 - 这就是我注意到它会慢慢变慢,并且它不会卡在某处。

我有20年的c和许多其他语言的经验,但我是一个蟒蛇初学者。我可以采取哪些步骤来解决此脚本问题?

1 个答案:

答案 0 :(得分:1)

如果您的代码是脚本,则可以运行cProfile,如图in this answer

所示
python -m cProfile myscript.py

我不知道这是否能为您提供所需的粒度,否则请查看The Python Profilers

至于你的代码运行缓慢的实际原因,我怀疑是catastrophic backtracking或者你打开并在每次模式匹配时附加到你的日志文件。 Shlemiel The Painter