psutil 是一個(gè)很方便的和系統(tǒng)交互的庫,可以查看程序運(yùn)行中的各種運(yùn)行狀態(tài)。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import psutil
import os
import sys
import time
pid = os.getpid()
p = psutil.Process(pid)
print 'Process info:'
print 'name: ', p.name()
print 'exe: ', p.exe()
data = []
while True:
data += list(range(100001))
info = p.memory_full_info()
memory = info.uss / 1024. / 1024.
print 'Memory used: {:.2f} MB'.format(memory)
if memory > 40:
print 'Memory too big! Exiting.'
sys.exit()
time.sleep(1)
上面這個(gè)腳本可以方便的查看該程序的內(nèi)存占用情況,其中 memory_full_info() 方法會(huì)返回很詳盡的內(nèi)存消費(fèi)情況
其中:
VSS- Virtual Set Size 虛擬耗用內(nèi)存(包含共享庫占用的內(nèi)存)
RSS- Resident Set Size 實(shí)際使用物理內(nèi)存(包含共享庫占用的內(nèi)存)
PSS- Proportional Set Size 實(shí)際使用的物理內(nèi)存(比例分配共享庫占用的內(nèi)存)
USS- Unique Set Size 進(jìn)程獨(dú)自占用的物理內(nèi)存(不包含共享庫占用的內(nèi)存)
一般來說內(nèi)存占用大小有如下規(guī)律:VSS >= RSS >= PSS >= USS