如何衡量函数的内存性能?
How can I measure Memory Performance of a Function?
有没有办法测量函数在 Python 中使用的内存?
内存使用的峰值,或者类似内存与执行时间的对比?
我可以插入一些字节码,并检查堆栈中每一定数量的步骤并获取时间戳,但这是我想到的解决方案,我确信有一种方法可以通过标准模块找出答案或者其他的东西。
问题是我什至不知道我想做的事情是否有名称,如果它有名称,适合它的术语是什么。
对我有很大帮助的主要问题是内存监控。
任何的想法?
(我正在尝试对一些例程进行性能测试,我想象这可能是装饰器,但我只需要在执行期间测量、内存、时间和变量的可能状态的方法,但不像在调试如“当某个变量保留其值时发生了多少次迭代”以及此类问题,并尝试提取函数范围内变量的历史记录以解决问题)
是的,它确实存在!
您可以使用内存分析器,更多信息 here.
举个例子:
@profile
def yourFunction():
alpha = sqrt(2)
您使用以下命令启动脚本:
python -m memory_profiler main.py
要随时间推移获取内存占用量,您可以使用同一包中的 mprof:
mprof run main.py
mprof plot
你会得到(作为例子)
有没有办法测量函数在 Python 中使用的内存? 内存使用的峰值,或者类似内存与执行时间的对比?
我可以插入一些字节码,并检查堆栈中每一定数量的步骤并获取时间戳,但这是我想到的解决方案,我确信有一种方法可以通过标准模块找出答案或者其他的东西。
问题是我什至不知道我想做的事情是否有名称,如果它有名称,适合它的术语是什么。
对我有很大帮助的主要问题是内存监控。 任何的想法?
(我正在尝试对一些例程进行性能测试,我想象这可能是装饰器,但我只需要在执行期间测量、内存、时间和变量的可能状态的方法,但不像在调试如“当某个变量保留其值时发生了多少次迭代”以及此类问题,并尝试提取函数范围内变量的历史记录以解决问题)
是的,它确实存在! 您可以使用内存分析器,更多信息 here.
举个例子:
@profile
def yourFunction():
alpha = sqrt(2)
您使用以下命令启动脚本:
python -m memory_profiler main.py
要随时间推移获取内存占用量,您可以使用同一包中的 mprof:
mprof run main.py
mprof plot
你会得到(作为例子)