在写 Python 项目时,有时候你会发现,程序跑着跑着就开始“吃”内存,或者某个接口响应突然变慢。其实,很多性能问题不是算法复杂,而是你没搞清楚代码到底耗在哪儿。今天这篇文章,我们就聊聊怎么用几行 Python 代码监控内存和执行时间,让你写代码更有“底气”。
一、最简单的执行时间统计法
很多人调性能第一反应是加个 time.time(),这个没错,简单粗暴又实用。
输出类似:
不过这种方法不太方便在多个函数或模块间使用,建议用更优雅一点的方式,比如装饰器。
二、用装饰器统计函数耗时
装饰器其实就是在函数执行前后插入逻辑,非常适合这种性能监控场景。
time.perf_counter() 比 time.time() 更精准,适合微秒级别的性能分析。
三、监控内存使用情况(psutil)
光看时间还不够,有时候你会发现函数明明很快,但运行久了内存占用越来越多,这就得看“内存泄漏”或“缓存没清掉”的问题了。psutil 是个非常实用的库,能获取系统和进程的各种资源使用情况。
这段代码可以很直观地告诉你执行前后内存的变化。
四、用 tracemalloc 跟踪内存分配
如果你想知道到底哪一行代码占了内存,可以试试 Python 自带的 tracemalloc 模块。
运行后你会看到两个数字:当前内存和峰值内存。如果某个函数在峰值时占了太多,那就得优化数据结构或清理引用了。
五、结合两者的监控类
如果你项目比较大,建议封装个监控工具类,方便全局使用:
这样就能在任何代码块前后加个 with Monitor():,自动打印内存变化和耗时了。
六、实际场景:分析慢函数
假设你在处理日志文件,发现程序跑得特别慢。你可以像这样快速分析:
输出的执行时间能帮你判断瓶颈是不是在 I/O 上。如果是 CPU 密集型的,可以考虑多线程或异步。
七、总结一下
- 只想看函数耗时:time.perf_counter() + 装饰器
- 想看内存变化:psutil.Process().memory_info()
- 想知道内存哪行吃得多:tracemalloc
- 想统一监控:封装成类或上下文管理器
这几招结合起来,足够覆盖 90% 的性能排查场景了。别忘了,性能优化的第一步永远是——先量化问题,再动刀。
如果你想进一步分析全局性能,也可以用 cProfile:
它能打印出每个函数调用的次数和平均耗时,非常适合定位复杂程序的瓶颈。
这样一来,你的 Python 项目在上线前就能“体检”一次:哪些函数太慢,哪里占内存太多,一清二楚。写代码不是怕有 bug,怕的是连 bug 吃内存都没察觉。
以上就是“监控 Python 内存使用情况和代码执行时间!”的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://www.phpxs.com/post/13580/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料