我想從python運行程序並查找其內存使用情況。要做到這一點,我使用:使用subprocess.Popen()或subprocess.check_call()時程序被卡住
l=['./a.out','<','in.txt','>','out.txt']
p=subprocess.Popen(l,shell=False,stdout = subprocess.PIPE, stderr = subprocess.PIPE)
p.wait()
Res= getrusage(resource.RUSAGE_CHILDREN)
print Res.ru_maxrss
我還試圖用check_call(l,shell=False,stdout = subprocess.PIPE, stderr = subprocess.PIPE)
和刪除p.wait但問題是程序卡住在p.wait()使用check_call在使用POPEN和check_call()
時() 。我無法弄清楚爲什麼會發生這種情況。我的論證列表錯了嗎?
命令./a.out <in.txt> out.txt
在終端上工作正常。我正在使用Ubuntu
好吧,我知道了...我知道我的下一個問題是關閉主題,但我用來計算正在執行的程序的內存使用情況的方案沒有返回正確的答案。我想知道如何獲得最大內存使用量。 – user2179293
[subprocess.Popen跨平臺資源使用](http://stackoverflow.com/q/22715059/4279) – jfs
我試過使用psutil,但我有一個疑問。如果進程在到達'psutil.Process(p.pid)'前結束,那麼會發生什麼。有時輸出(rss = 0,vms = 0)出現什麼意思?但在隨後的運行中,它顯示幾乎正確的內存使用情況。 – user2179293