【问题标题】:How to keep track of virtual memory used when running Python code?如何跟踪运行 Python 代码时使用的虚拟内存?
【发布时间】:2017-07-07 17:03:38
【问题描述】:

我有一个 Python 包,我正在对使用的虚拟内存进行基准测试。

目前,这还不是很精确。我提交脚本,例如

python script1.py

并查看执行所用的时间和资源。

是否有一些软件包/方法可以找出我的 RAM 瓶颈在哪里?我正在考虑像

这样的工具
ram_used python script1.py 

这将跟踪使用了多少 RAM。

这样的事情存在吗?

【问题讨论】:

  • RAM 瓶颈 是什么意思?您想知道哪里程序使用了大量内存吗?或者只是多少钱?
  • 一般类型的工具称为profiler,它通常绑定到您的操作系统,而不是特定的语言。
  • @WillemVanOnsem 只需多少

标签: python memory ram


【解决方案1】:

是的,有 - 它叫做memory_profiler。一旦你完成并将 @profile 装饰器添加到你想要分析的函数中,你就可以使用了;

python -m memory_profiler example.py

【讨论】:

  • 什么 Python 版本? 2.7 和 3.5.4 都否认我知道 memory_profiler
  • 你是用pip安装的吗? pip install -U memory_profiler 使用 python 2.7.1 对我来说很好。
  • 谢谢;我的“安装”命令别名为yumpip 工作,并且分析工作。
  • @TomWyllie 这对于检查 Python 包的各个函数非常有用。但是,为了检查整个包,在所有函数中添加装饰器有点麻烦。有没有办法检查整个包使用的虚拟内存?
  • 我没有对此进行测试,但我的第一个想法是装饰程序的入口点,例如您的if __name__ == '__main__'。虽然这可能不适合您的用例。
【解决方案2】:

还有memory_infopsutilhttps://pythonhosted.org/psutil/

放在脚本的开头:

import psutil
p = psutil.Process()

鉴于代码运行正常,将其放在最后一行:

print(p.memory_info())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多