2017-06-10 36 views
0

我正在寫一個python腳本,我想知道一些命令後,Python進程的內存增加了多少。用這種方法如何查看有多少內存正在使用Python?

Memory1 = .... byte 
#Some instructions ... 
Memory2 = .... byte 

我可以在我的代碼中放什麼命令?

+0

操作系統是Ubuntu Linux 16.04 LTS –

回答

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()以獲取分配的空間總量。

相關問題