python运行需要多大内存_Python程序的性能分析指南(转)

本文介绍了如何分析Python程序的性能,包括运行速度、内存占用、内存泄漏和性能瓶颈。通过time模块进行简单计时,使用line_profiler和memory_profiler进行详细分析,以及借助objgraph定位内存泄漏。在IPython中,还可以使用%lprun和%mprun进行便捷的性能分析。
摘要由CSDN通过智能技术生成

虽然不是所有的Python程序都需要严格的性能分析,不过知道如何利用Python生态圈里的工具来分析性能,也是不错的。

分析一个程序的性能,总结下来就是要回答4个问题:

它运行的有多快?

它的瓶颈在哪?

它占用了多少内存?

哪里有内存泄漏?

接下来,我们会着手使用一些很棒的工具,来帮我们回答这些问题。

粗粒度的计算时间

我们先来用个很快的方法来给我们的代码计时:使用unix的一个很好的功能 time。

关于这3个测量值的具体含义可以看StackOverflow上的帖子,但是简要的说就是:

real:代表实际花费的时间

user::代表cpu花费在内核外的时间

sys:代表cpu花费在内核以内的时间

通过把sys和user时间加起来可以获得cpu在你的程序上花费的时间。

如果sys和user加起来的时间比real时间要小很多,那么你可以猜想你的程序的大部分性能瓶颈应该是IO等待的问题。

用上下文管理器来细粒度的测量时间

我接下来要使用的技术就是让你的代码仪器化以让你获得细粒度的时间信息。这里是一个计时方法的代码片段:

为了使用它,将你想要测量时间的代码用Python关键字with和Timer上下文管理器包起来。它会在你的代码运行的时候开始计时,并且在执行结束的完成计时。

下面是一个使用它的代码片段:

我会经常把这些计时器的输入记录进一个日志文件来让我知道程序的性能情况。

用分析器一行一行地计时和记录执行频率

Robert Kern有一个很棒

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值