python - 如何解决 python 代码运行缓慢的问题

标签 python performance python-2.7

我有一个处理大量文件的 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/

相关文章:

Javascript 可选类型提示

FPU与软件仿真的性能对比

python - 测试使用 Flask-WTF validate_on_submit 的 POST

python - 以带有分隔符的字符串形式返回列表

python - 如何打印列表中的元素(非重复)

python - 系统服务音频输出

python - 计算列表中有多少个值满足特定条件

sql - PostgreSQL 不使用部分索引

python - 在opencv中绘制轮廓

python - 使用 kubernetes python 客户端重试 watch 时如何避免 "resource too old"?