最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文解密Python進(jìn)行監(jiān)控進(jìn)程的黑科技

 更新時(shí)間:2025年07月20日 11:10:17   作者:愛(ài)吃?香菜  
在計(jì)算機(jī)系統(tǒng)管理和應(yīng)用性能優(yōu)化中,監(jiān)控進(jìn)程的CPU、內(nèi)存和IO使用率是非常重要的任務(wù),下面我們就來(lái)講講如何Python寫一個(gè)簡(jiǎn)單使用的監(jiān)控進(jìn)程的工具吧

在計(jì)算機(jī)系統(tǒng)管理和應(yīng)用性能優(yōu)化中,監(jiān)控進(jìn)程的CPU、內(nèi)存和IO使用率是非常重要的任務(wù)。Python作為一種功能強(qiáng)大的編程語(yǔ)言,可以輕松地實(shí)現(xiàn)這些監(jiān)控任務(wù)。小編將介紹如何使用Python寫一個(gè)簡(jiǎn)單使用的監(jiān)控進(jìn)程的CPU、內(nèi)存和IO使用率的工具。 

準(zhǔn)備工作

啥也不說(shuō),先裝庫(kù):psutil是一個(gè)跨平臺(tái)用于獲取系統(tǒng)信息(包括進(jìn)程信息)的流行庫(kù);安裝命令:

pip install psutil

監(jiān)控CPU使用率

使用psutil庫(kù)可以輕松地監(jiān)控進(jìn)程的CPU使用率。以下是一個(gè)示例代碼,演示了如何監(jiān)控一個(gè)指定進(jìn)程的CPU使用率:

import psutil
import os
import time
 
def monitor_cpu(process_id, duration):
    process = psutil.Process(process_id)
    start_time = time.time()
 
    while time.time() - start_time < duration:
        cpu_percent = process.cpu_percent(interval=1)
        print(f"CPU 使用率: {cpu_percent}%")
        
if __name__ == "__main__":
    target_process_id = os.getpid()  # 替換為你要監(jiān)控的進(jìn)程ID
    monitoring_duration = 60  # 監(jiān)控持續(xù)時(shí)間(秒)
    monitor_cpu(target_process_id, monitoring_duration)

通過(guò)cpu_percent() 獲取進(jìn)程的CPU使用率,然后調(diào)整interval參數(shù),控制采樣時(shí)間間隔,再加個(gè)循環(huán),就實(shí)現(xiàn)了不停獲取數(shù)據(jù)信息的小腳本,自己可以擴(kuò)展將結(jié)果寫入文件或者數(shù)據(jù)庫(kù)種用來(lái)持久化輸出了。

監(jiān)控內(nèi)存使用率

psutil庫(kù)的memory_info()方法可以獲取進(jìn)程的內(nèi)存占用,廢話不多說(shuō)上代碼:???????

import psutil
import os
import time
 
def monitor_memory(process_id, duration):
    process = psutil.Process(process_id)
    start_time = time.time()
 
    while time.time() - start_time < duration:
        memory_info = process.memory_info()
        memory_percent = process.memory_percent()
        print(f"內(nèi)存使用量: {memory_info.rss / (1024 * 1024):.2f} MB")
        print(f"內(nèi)存使用率: {memory_percent:.2f}%")
        time.sleep(1)
       
        
if __name__ == "__main__":
    target_process_id = os.getpid()  # 替換為你要監(jiān)控的進(jìn)程ID
    monitoring_duration = 60  # 監(jiān)控持續(xù)時(shí)間(秒)
    monitor_memory(target_process_id, monitoring_duration)

其中rss屬性可以獲取實(shí)際使用物理內(nèi)存,memory_info() 獲取進(jìn)程的內(nèi)存信息,簡(jiǎn)短的代碼就實(shí)現(xiàn)了內(nèi)存監(jiān)控,可以自己適當(dāng)擴(kuò)展了。

監(jiān)控IO使用率

psutil庫(kù)的io_counters()方法可以監(jiān)控進(jìn)程的IO操作,廢話不多說(shuō),上代碼:???????

import psutil
import os
import time
 
def monitor_io(process_id, duration):
    process = psutil.Process(process_id)
    start_time = time.time()
 
    while time.time() - start_time < duration:
        io_counters = process.io_counters()
        print(f"讀取字節(jié)數(shù): {io_counters.read_bytes}") # 要變成MB,需要除1024/1024
        print(f"寫入字節(jié)數(shù): {io_counters.write_bytes}")
        time.sleep(1)
        
if __name__ == "__main__":
    target_process_id = os.getpid()  # 替換為你要監(jiān)控的進(jìn)程ID
    monitoring_duration = 60  # 監(jiān)控持續(xù)時(shí)間(秒)
    monitor_io(target_process_id, monitoring_duration)

io_counters()方法返回了進(jìn)程的IO計(jì)數(shù)器信息,可以讀取和寫入的字節(jié)數(shù)。

小工具代碼整合

上面3個(gè)小函數(shù)已經(jīng)實(shí)現(xiàn)了監(jiān)控我門常規(guī)的信息了,現(xiàn)在我們的要求是要同時(shí)監(jiān)控,而不是監(jiān)控完這個(gè)再監(jiān)控那個(gè),對(duì)吧。so 小編使用異步編程來(lái)簡(jiǎn)單帶大伙玩一下,完整代碼如下:

import asyncio
import time
 
import psutil
 
 
async def monitor_io(process_id, duration):
    process = psutil.Process(process_id)
    start_time = time.time()
 
    while time.time() - start_time < duration:
        io_counters = process.io_counters()
        print(f"讀取字節(jié)數(shù): {io_counters.read_bytes / 1024 / 1024} MB")
        print(f"寫入字節(jié)數(shù): {io_counters.write_bytes / 1024 / 1024} MB")
        await asyncio.sleep(1)
 
 
async def monitor_memory(process_id, duration):
    process = psutil.Process(process_id)
    start_time = time.time()
 
    while time.time() - start_time < duration:
        memory_info = process.memory_info()
        memory_percent = process.memory_percent()
        print(f"內(nèi)存使用量: {memory_info.rss / (1024 * 1024):.2f} MB")
        print(f"內(nèi)存使用率: {memory_percent:.2f}%")
        await asyncio.sleep(1)
 
 
async def monitor_cpu(process_id, duration):
    process = psutil.Process(process_id)
    start_time = time.time()
 
    while time.time() - start_time < duration:
        cpu_percent = process.cpu_percent(interval=1)
        print(f"CPU 使用率: {cpu_percent}%")
        await asyncio.sleep(1)
 
 
async def main():
    process_id = int(input("請(qǐng)輸入進(jìn)程ID:"))
    duration = int(input("請(qǐng)輸入監(jiān)控時(shí)長(zhǎng)(秒):"))
 
    tasks = [
        monitor_io(process_id, duration),
        monitor_memory(process_id, duration),
        monitor_cpu(process_id, duration)
    ]
 
    await asyncio.gather(*tasks)
 
 
if __name__ == "__main__":
    asyncio.run(main())

到此這篇關(guān)于一文解密Python進(jìn)行監(jiān)控進(jìn)程的黑科技的文章就介紹到這了,更多相關(guān)Python監(jiān)控進(jìn)程內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python web.py服務(wù)器與客戶端的實(shí)現(xiàn)示例

    python web.py服務(wù)器與客戶端的實(shí)現(xiàn)示例

    本文介紹了使用Python的web.py庫(kù)搭建一個(gè)簡(jiǎn)單的Web服務(wù)器,并演示了自定義端口、URL映射以及POST和GET請(qǐng)求的處理,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-10-10
  • 使用Python開(kāi)發(fā)一個(gè)圖片OCR管理和文章下載工具

    使用Python開(kāi)發(fā)一個(gè)圖片OCR管理和文章下載工具

    在日常工作中,我們經(jīng)常面臨兩個(gè)零碎但繁瑣的需求,一是管理大量的OCR(文字識(shí)別)圖片素材,二是看到優(yōu)質(zhì)的公眾號(hào)文章,想把里面的圖片批量下載下來(lái)保存素材,下面我們就來(lái)看看如何使用Python將這兩個(gè)功能整合到一個(gè)工具中吧
    2025-12-12
  • python基礎(chǔ)中的文件對(duì)象詳解

    python基礎(chǔ)中的文件對(duì)象詳解

    這篇文章主要為大家介紹了python基礎(chǔ)中的文件對(duì)象,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • pytorch搭建模型的五大層次級(jí)別解讀(由淺入深)

    pytorch搭建模型的五大層次級(jí)別解讀(由淺入深)

    這篇文章主要介紹了pytorch搭建模型的五大層次級(jí)別(由淺入深),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Python實(shí)現(xiàn)圖片添加文字

    Python實(shí)現(xiàn)圖片添加文字

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)圖片添加文字,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • python刪除csv文件的行列

    python刪除csv文件的行列

    這篇文章主要介紹了python刪除csv文件中的某幾列或行,主要介紹了python對(duì)csv刪除的方法,感興趣的同學(xué)可以參考學(xué)習(xí)
    2021-04-04
  • Python深度學(xué)習(xí)pytorch神經(jīng)網(wǎng)絡(luò)多輸入多輸出通道

    Python深度學(xué)習(xí)pytorch神經(jīng)網(wǎng)絡(luò)多輸入多輸出通道

    這篇文章主要為大家介紹了Python深度學(xué)習(xí)中pytorch神經(jīng)網(wǎng)絡(luò)多輸入多輸出通道的詳解有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10
  • Python編程之字符串模板(Template)用法實(shí)例分析

    Python編程之字符串模板(Template)用法實(shí)例分析

    這篇文章主要介紹了Python編程之字符串模板(Template)用法,結(jié)合具體實(shí)例形式分析了Python字符串模板的功能、定義與使用方法,需要的朋友可以參考下
    2017-07-07
  • Python中4種實(shí)現(xiàn)數(shù)值的交換方式

    Python中4種實(shí)現(xiàn)數(shù)值的交換方式

    這篇文章主要介紹了Python中4種實(shí)現(xiàn)數(shù)值的交換方式,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • Python使用OpenPyXL處理Excel表格

    Python使用OpenPyXL處理Excel表格

    這篇文章主要介紹了Python使用OpenPyXL處理Excel表格,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07

最新評(píng)論

双桥区| 安福县| 阿尔山市| 泗洪县| 于田县| 吕梁市| 鹿邑县| 清新县| 乐业县| 梁平县| 大足县| 辰溪县| 南漳县| 湛江市| 咸宁市| 郸城县| 大连市| 普陀区| 崇明县| 明星| 铅山县| 长沙市| 温州市| 北辰区| 蓬莱市| 北海市| 潢川县| 厦门市| 吴忠市| 怀化市| 马边| 历史| 长寿区| 临汾市| 普格县| 密山市| 棋牌| 安岳县| 崇文区| 沂源县| 甘孜县|