回覆列表
-
1 # sunny143130492
-
2 # 魚飛飛
透過python指令碼分析機器cpu使用情況主要有以下步驟(供參考):
首先,確定分析cpu的哪些指標,最關鍵的有:核心態使用率、使用者態使用率、iowait比率。
其次,確定統計頻率及統計精度。
再次,確定統計指標,包括平均值、峰值、最低值等。
最後,透過python指令碼執行top命令,輸出cpu的各項指標,可以在統計週期內臨時寫入一個檔案,然後對臨時檔案進行統計指標(平均值、峰值、最低值)計算,可以直接使用awk命令,也可以在python程式中計算。
top命令可以使用這個命令進行統計:top -cbi -d1 -n 10 > tmp.txt
這個命令的意思是:逐次輸出top統計結果輸出到
tmp.txt
檔案中,每1秒鐘輸出一次,總共輸出10次。
如何跟蹤Python指令碼使用時CPU使用情況,重點關注以下幾個方面:
1、cProfile
2、line_profiler
3、pprofile
4、vprof
測量CPU使用率,主要使用與記憶體分析中使用指令碼相同的指令碼,具體如下:
在PyPy2中,你需要使用與之配合的pip版本:
cProfile
在討論CPU分析時,最常用的工具之一是cProfile,主要是因為它內建在CPython2和PyPy2中。這是一個確定性的分析器,意味著在執行程式時會收集一組統計資料,例如我們程式碼的各個部分的執行次數或執行時間。此外,cProfile在系統上的開銷比其他內建的分析器(配置檔案)要低。
line_profiler
此分析器在行級提供關於工作負載的資訊。它使用Cython在C中實現,並將其與cProfile進行比較時發現其具有較小的開銷。
原始碼可以在這裡找到,也可以在這裡找到PyPI頁面。與cProfile相比,它具有一樣的開銷,不過卻要花費12倍的時間來獲取配置檔案。
要使用它,你需要先透過pip新增它:pip install pip install Cython ipython == 5.4.1 line_profiler(CPython2)。這個分析器的一個主要缺點是它不支援PyPy。
pprofile
pprofile是一個“執行緒測量和統計的純python分析器”。
它受到line_profiler的啟發,修復了很多缺點,但是由於它完全用Python編寫,所以它也可以與PyPy成功使用。與cProfile相比,使用CPython時的分析時間要多28倍,而使用PyPy時,分析時間要多10倍,而且細節水平更加細化。
vprof
vprof是一個Python分析器,為各種Python程式特性(如執行時間和記憶體使用)提供豐富的互動式視覺化。它是一個基於Node.JS的圖形化的顯示在網頁中的結果。