2017-03-16 32 views
1

我有一個Python腳本,我想測量它使用的內存量。我試過memory_profiler,但我找不到合適的選項。Python - 測量腳本中使用的內存量

我想的東西,我可以直接使用:要想知道內存在程序的不同階段使用量

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

編輯: 我沒有太多的經驗,但我會嘗試更好地解釋這個問題。我需要將我的代碼部署到一臺只能訪問有限內存(如1 GB)的機器上。因此,我需要知道我的代碼將使用多少內存。由於代碼將隨着複雜性的增加而遞增運行,因此我需要確保所使用的內存量收斂於最大值。由於這個原因,我需要測量在執行的不同階段如何改變內存使用量,在這種情況下,這個內存由for循環 表示。

+0

這是怎樣的一個棘手的問題,而且也有,你可以把它解釋條款中分配給幾個方法利用內存。你想要程序的總分配內存嗎?你想用一個百分比來分配內存嗎?你想在程序的某個特定點分配全部內存嗎?多一點澄清可能會有所幫助。 – PrestonM

回答

0

我猜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) 

該函數返回,使用它可以訪問(檢查文檔爲他們中的每一個)的各種屬性的對象。

+0

我其實需要python 2,但python 3的東西是一個好開始 – Donbeo

+0

然後在這裏:https://docs.python.org/2/library/resource.html#resource-usage –

+0

cna你請寫一個示例用法? – Donbeo

0

嗯,如果你使用python3.4,以後你可以使用tracemalloc模塊

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