欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用python獲取cpu每秒的使用率

 更新時間:2022年05月16日 10:44:05   作者:Kaiser?king  
這篇文章主要介紹了使用python獲取cpu每秒的使用率,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

獲取cpu每秒的使用率

要求

請獲取某段時間的cpu的占有率,以持久化形式保存。

代碼:

import psutil
import time
# cpu_res = psutil.cpu_percent()
# print(cpu_res)
# 每一秒獲取獲取cpu的占有率 --->持久化保存
# 如何將時間和對應(yīng)的cpu占有率去匹配
while True:
    # 獲取當(dāng)前時間和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.用元組時間可以準(zhǔn)確獲取自己想獲得的時、分、秒

4.將時間——>cpu占有率寫入文件cpu.txt中。

5.time.sleep(1) 表示休眠時間,等待1秒再執(zhí)行。

輸出結(jié)果:

在這里插入圖片描述

在cpu.txt文件中

在這里插入圖片描述

python充分利用cpu

當(dāng)利用python處理大規(guī)模數(shù)據(jù)或者運行一些耗時較長的程序時,往往會發(fā)現(xiàn)程序運行時CPU并沒有跑滿,哪怕開了多線程后CPU利用率仍然不高。

這是因為在默認情況下,Python 程序是單個進程,使用單 CPU 核心執(zhí)行,這意味著多核處理器只使用了一個核。

「一核有難九核圍觀」意味著超過 50% 的算力都會被浪費。這篇文章將介紹如何解決這種情況。

多線程無法增加cpu使用率的原因

GIL 的全程為 Global Interpreter Lock ,意即全局解釋器鎖。

在 Python 語言的主流實現(xiàn) CPython 中,GIL 是一個貨真價實的全局線程鎖,在解釋器解釋執(zhí)行任何 Python 代碼時,都需要先獲得這把鎖才行,在遇到 I/O 操作時會釋放這把鎖。

如果是純計算的程序,沒有 I/O 操作,解釋器會每隔 100 次操作就釋放這把鎖,讓別的線程有機會執(zhí)行(這個次數(shù)可以通過 sys.setcheckinterval 來調(diào)整)。

所以雖然 CPython 的線程庫直接封裝操作系統(tǒng)的原生線程,但 CPython 進程做為一個整體,同一時間只會有一個獲得了 GIL 的線程在跑,其它的線程都處于等待狀態(tài)等著 GIL 的釋放。

這就意味著哪怕開了多線程CPU使用率仍然不會很高。

如何充分使用多核跑程序

有三個辦法

1. multiprocessing

multiprocessing 是多進程標(biāo)準(zhǔn)庫,讓多進程的 python 程序編寫簡化到類似多線程的程度,通過多進程的方式使用多個CPU核心。

2. C 語言擴展機制

如果不想用多進程這樣重量級的解決方案,可以改用 C/C++。當(dāng)然,你也不用做的這么絕,只需要把關(guān)鍵部分用 C/C++ 寫成 Python 擴展,其它部分還是用 Python 來寫,讓 Python 的歸 Python,C 的歸 C。一般計算密集性的程序都會用 C 代碼編寫并通過擴展的方式集成到 Python 腳本里(如 NumPy 模塊)。這樣在擴展里就完全可以用 C 創(chuàng)建原生線程,就可以充分利用 CPU 的計算資源了。

3. ctypes

不過,寫 Python 擴展總是讓人覺得很復(fù)雜。好在 Python 還有另一種與 C 模塊進行互通的機制 : ctypes。ctypes 與 Python 擴展不同,它可以讓 Python 直接調(diào)用任意的 C 動態(tài)庫的導(dǎo)出函數(shù)。你所要做的只是用 ctypes 寫些 python 代碼即可。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python:pandas合并csv文件的方法(圖書數(shù)據(jù)集成)

    python:pandas合并csv文件的方法(圖書數(shù)據(jù)集成)

    下面小編就為大家分享一篇python:pandas合并csv文件的方法(圖書數(shù)據(jù)集成),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python圖片處理模塊PIL操作方法(pillow)

    Python圖片處理模塊PIL操作方法(pillow)

    這篇文章主要介紹了Python圖片處理模塊PIL操作方法(pillow),本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • Python接口自動化之文件上傳/下載接口詳解

    Python接口自動化之文件上傳/下載接口詳解

    在接口測試中,經(jīng)常會涉及到文件上傳以及下載,下面這篇文章主要給大家介紹了關(guān)于Python接口自動化之文件上傳/下載接口的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • 詳解Python中數(shù)據(jù)類型的轉(zhuǎn)換

    詳解Python中數(shù)據(jù)類型的轉(zhuǎn)換

    這篇文章主要為大家詳細介紹了Python中數(shù)據(jù)類型轉(zhuǎn)換的相關(guān)資料,文中的示例代碼講解詳細,具有一定的參考價值,感興趣的小伙伴可以了解一下
    2023-03-03
  • python字符串運算符詳情

    python字符串運算符詳情

    這篇文章主要介紹了 python字符串運算符詳情,在編程里,用的最多的就是字符串,字符串同時也是各類數(shù)據(jù)的中轉(zhuǎn)站,下文基于python的相關(guān)資料介紹字符串運算符,需要的小伙伴可以參考一下
    2022-04-04
  • TensorFlow:將ckpt文件固化成pb文件教程

    TensorFlow:將ckpt文件固化成pb文件教程

    今天小編就為大家分享一篇TensorFlow:將ckpt文件固化成pb文件教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • JSON Web Tokens的實現(xiàn)原理

    JSON Web Tokens的實現(xiàn)原理

    本文主要介紹了JSON Web Tokens的實現(xiàn)原理。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-04-04
  • 基于python二叉樹的構(gòu)造和打印例子

    基于python二叉樹的構(gòu)造和打印例子

    今天小編就為大家分享一篇基于python二叉樹的構(gòu)造和打印例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python中的優(yōu)先隊列(priority?queue)和堆(heap)

    Python中的優(yōu)先隊列(priority?queue)和堆(heap)

    這篇文章主要介紹了Python中的優(yōu)先隊列(priority?queue)和堆(heap),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • python使用matplotlib繪制折線圖教程

    python使用matplotlib繪制折線圖教程

    Matplotlib是一個Python工具箱,用于科學(xué)計算的數(shù)據(jù)可視化。借助它,Python可以繪制如Matlab和Octave多種多樣的數(shù)據(jù)圖形。下面這篇文章主要介紹了python使用matplotlib如何繪制折線圖的方法教程,需要的朋友可以參考借鑒。
    2017-02-02

最新評論