Python - 测量脚本中使用的内存量

Posted

技术标签:

【中文标题】Python - 测量脚本中使用的内存量【英文标题】:Python - measure amount of memory used in script 【发布时间】:2017-03-16 21:27:36 【问题描述】:

我有一个 Python 脚本,我想测量它使用的内存量。我试过memory_profiler,但找不到适合我的选项。

我想要一些可以用作:

results = 
for i in range(10):
    l = [1]*i*1000
    memory = compute_used_memory()
    results[i] = memory

为了了解程序不同阶段使用的内存量。

编辑: 我没有太多经验,但我会尝试更好地解释这个问题。我需要将我的代码部署在只能访问有限内存(例如 1 GB)的机器上。因此,我需要知道我的代码将使用多少内存。由于代码将随着复杂性的增加而逐步运行,我需要确保使用的内存量收敛到最大值。出于这个原因,我需要测量在执行的不同阶段使用的内存量如何变化,在这种情况下由 for 循环表示 .

【问题讨论】:

这是一个棘手的问题,您可以通过几种方式来解释分配给已用内存的方式。你想要程序的总分配内存吗?你想要一个用于分配内存的百分比吗?你想在程序的特定点分配总内存吗?再澄清一点可能会有所帮助。 【参考方案1】:

嗯,如果你使用的是python3.4及更高版本,你可以使用tracemalloc模块

import tracemalloc
tracemalloc.start()
profiled_code_here
print("Current: %d, Peak %d" % tracemalloc.get_traced_memory())

【讨论】:

【参考方案2】:

我猜是 Python3,所以尝试使用“资源”模块。 getrusage 函数应该可以满足您的需求。

Start here

示例编辑:

import resource
for i in range(10):
    l = [1] * i * 1000
    memory = resource.getrusage(resource.RUSAGE_SELF)
    print(memory.ru_utime)

该函数返回一个具有各种属性的对象,您可以访问这些属性(检查每个属性的文档)。

【讨论】:

我实际上需要 python 2,但 python 3 是一个好的开始 然后在这里:docs.python.org/2/library/resource.html#resource-usage 请写一个用法示例? 编辑答案只需一秒钟 返回的值中使用的内存总量是多少?

以上是关于Python - 测量脚本中使用的内存量的主要内容,如果未能解决你的问题,请参考以下文章

Python脚本分析CPU使用情况

我如何测量python中对象的内存使用情况?

Python脚本知道它使用了多少内存[重复]

Python包装脚本来测量另一个python文件的执行时间[重复]

如何让 Python 多线程管道使用 90% 的可用内存?

python 使用jstat -gcnew测量内存分配吞吐量