您好,登錄后才能下訂單哦!
今天小編給大家分享一下怎么使用python獲取cpu每秒的使用率的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
請獲取某段時間的cpu的占有率,以持久化形式保存。
代碼:
import psutil import time # cpu_res = psutil.cpu_percent() # print(cpu_res) # 每一秒獲取獲取cpu的占有率 --->持久化保存 # 如何將時間和對應的cpu占有率去匹配 while True: # 獲取當前時間和cpu的占有率 t = time.localtime() cpu_time = '%d:%d:%d' % (t.tm_hour, t.tm_min, t.tm_sec) cpu_res = psutil.cpu_percent() print(cpu_res) # 保存在文件中 with open('cpu.txt', 'a+') as f: f.write('%s %s \n' % (cpu_time, cpu_res)) time.sleep(1)
1.psutil模塊表示獲取本機的硬件信息
2.psutil.cpu_percent表示獲取cpu的占有率
3.用元組時間可以準確獲取自己想獲得的時、分、秒
4.將時間——>cpu占有率寫入文件cpu.txt中。
5.time.sleep(1) 表示休眠時間,等待1秒再執行。
輸出結果:
當利用python處理大規模數據或者運行一些耗時較長的程序時,往往會發現程序運行時CPU并沒有跑滿,哪怕開了多線程后CPU利用率仍然不高。
這是因為在默認情況下,Python 程序是單個進程,使用單 CPU 核心執行,這意味著多核處理器只使用了一個核。
「一核有難九核圍觀」意味著超過 50% 的算力都會被浪費。這篇文章將介紹如何解決這種情況。
GIL 的全程為 Global Interpreter Lock ,意即全局解釋器鎖。
在 Python 語言的主流實現 CPython 中,GIL 是一個貨真價實的全局線程鎖,在解釋器解釋執行任何 Python 代碼時,都需要先獲得這把鎖才行,在遇到 I/O 操作時會釋放這把鎖。
如果是純計算的程序,沒有 I/O 操作,解釋器會每隔 100 次操作就釋放這把鎖,讓別的線程有機會執行(這個次數可以通過 sys.setcheckinterval 來調整)。
所以雖然 CPython 的線程庫直接封裝操作系統的原生線程,但 CPython 進程做為一個整體,同一時間只會有一個獲得了 GIL 的線程在跑,其它的線程都處于等待狀態等著 GIL 的釋放。
這就意味著哪怕開了多線程CPU使用率仍然不會很高。
有三個辦法
multiprocessing 是多進程標準庫,讓多進程的 python 程序編寫簡化到類似多線程的程度,通過多進程的方式使用多個CPU核心。
如果不想用多進程這樣重量級的解決方案,可以改用 C/C++。當然,你也不用做的這么絕,只需要把關鍵部分用 C/C++ 寫成 Python 擴展,其它部分還是用 Python 來寫,讓 Python 的歸 Python,C 的歸 C。一般計算密集性的程序都會用 C 代碼編寫并通過擴展的方式集成到 Python 腳本里(如 NumPy 模塊)。這樣在擴展里就完全可以用 C 創建原生線程,就可以充分利用 CPU 的計算資源了。
不過,寫 Python 擴展總是讓人覺得很復雜。好在 Python 還有另一種與 C 模塊進行互通的機制 : ctypes。ctypes 與 Python 擴展不同,它可以讓 Python 直接調用任意的 C 動態庫的導出函數。你所要做的只是用 ctypes 寫些 python 代碼即可。
以上就是“怎么使用python獲取cpu每秒的使用率”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。