Don*_*beo 5 python memory profiling
我有一个 Python 脚本,我想测量它使用的内存量。我尝试过,memory_profiler但找不到适合我的选择。
我想要一些我可以用作的东西:
results = {}
for i in range(10):
l = [1]*i*1000
memory = compute_used_memory()
results[i] = memory
Run Code Online (Sandbox Code Playgroud)
以便了解程序不同阶段使用的内存量。
编辑: 我没有太多经验,但我会尝试更好地解释问题。我需要将我的代码部署在一台我只能访问有限内存(例如 1 GB)的机器上。因此,我需要知道我的代码将使用多少内存。由于代码将随着复杂性的增加而逐渐运行,我需要确保使用的内存量收敛到最大值。出于这个原因,我需要测量在执行的不同阶段使用的内存量如何变化,在这种情况下由 for 循环表示。
嗯,如果您使用的是python3.4及更高版本,则可以使用tracemalloc模块
import tracemalloc
tracemalloc.start()
profiled_code_here
print("Current: %d, Peak %d" % tracemalloc.get_traced_memory())
Run Code Online (Sandbox Code Playgroud)
Pie*_*ini -1
我猜是 Python3,所以尝试使用“资源”模块。getrusage 函数应该可以满足您的需要。
示例编辑:
import resource
for i in range(10):
l = [1] * i * 1000
memory = resource.getrusage(resource.RUSAGE_SELF)
print(memory.ru_utime)
Run Code Online (Sandbox Code Playgroud)
该函数返回一个具有各种属性的对象,您可以访问这些属性(检查每个属性的文档)。