如何查看使用 Python 的内存有多少? [复制]
Posted
技术标签:
【中文标题】如何查看使用 Python 的内存有多少? [复制]【英文标题】:How to see how much memory is using Python? [duplicate] 【发布时间】:2017-11-12 06:35:22 【问题描述】:我正在编写一个 python 脚本,我想知道在我执行一些命令后 Python 进程的 RAM 增加了多少。这样
Memory1 = .... byte
#Some instructions ...
Memory2 = .... byte
我可以在我的代码中输入什么命令?
【问题讨论】:
操作系统为 Ubuntu Linux 16.04 LTS 标记为重复,但实际上,这个问题已经有 10 年历史了,并且与 python 2 有关。 【参考方案1】:除了进行外部系统调用以获取有关当前进程的内存使用情况的信息外,没有内置的方法可以做到这一点,例如直接在 Linux 中读取当前进程的/proc/meminfo
。
如果您对标准库中的仅 Unix 解决方案感到满意,该解决方案只能返回 使用的峰值 resident memory,那么您正在寻找 resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
。
此函数返回一个对象,该对象描述当前进程或其子进程消耗的资源...
>>> resource.getrusage(resource.RUSAGE_SELF)
resource.struct_rusage(ru_utime=0.058433,
ru_stime=0.021911999999999997, ru_maxrss=7600, ru_ixrss=0,
ru_idrss=0, ru_isrss=0, ru_minflt=2445, ru_majflt=1, ru_nswap=0,
ru_inblock=256, ru_oublock=0, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0,
ru_nvcsw=148, ru_nivcsw=176)
这无法告诉您在调用之间分配了多少内存,但它可能有助于跟踪应用程序生命周期内使用的峰值内存的增长情况。
一些用 C 语言编写的 Python 分析器已被开发为直接与 CPython 交互,这些分析器能够检索有关使用的总内存的信息。一个例子是Heapy,它还具有绘图功能。
如果您只想在新对象添加到堆栈时跟踪它们消耗的内存,您始终可以在每个新对象上使用sys.getsizeof()
来取回已分配的运行总空间。
【讨论】:
sys.getsizeof
不返回复杂对象的大小。以上是关于如何查看使用 Python 的内存有多少? [复制]的主要内容,如果未能解决你的问题,请参考以下文章