成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

解密Python監控進程的黑科技:CPU、內存、IO使用率一目了然!

開發 后端
Python作為一種功能強大的編程語言,可以輕松地實現這些監控任務。勇哥將介紹如何使用Python寫一個簡單使用的監控進程的CPU、內存和IO使用率的工具。

在計算機系統管理和應用性能優化中,監控進程的CPU、內存和IO使用率是非常重要的任務。Python作為一種功能強大的編程語言,可以輕松地實現這些監控任務。勇哥將介紹如何使用Python寫一個簡單使用的監控進程的CPU、內存和IO使用率的工具。

準備工作

啥也不說,先裝庫:psutil是一個跨平臺用于獲取系統信息(包括進程信息)的流行庫;安裝命令:

pip install psutil

監控CPU使用率

使用psutil庫可以輕松地監控進程的CPU使用率。以下是一個示例代碼,演示了如何監控一個指定進程的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()  # 替換為你要監控的進程ID
    monitoring_duration = 60  # 監控持續時間(秒)
    monitor_cpu(target_process_id, monitoring_duration)

通過cpu_percent() 獲取進程的CPU使用率,然后調整interval參數,控制采樣時間間隔,再加個循環,就實現了不停獲取數據信息的小腳本,自己可以擴展將結果寫入文件或者數據庫種用來持久化輸出了。

監控內存使用率

psutil庫的memory_info()方法可以獲取進程的內存占用,廢話不多說上代碼:

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"內存使用量: {memory_info.rss / (1024 * 1024):.2f} MB")
        print(f"內存使用率: {memory_percent:.2f}%")
        time.sleep(1)
       
        
if __name__ == "__main__":
    target_process_id = os.getpid()  # 替換為你要監控的進程ID
    monitoring_duration = 60  # 監控持續時間(秒)

其中rss屬性可以獲取實際使用物理內存,memory_info() 獲取進程的內存信息,簡短的代碼就實現了內存監控,可以自己適當擴展了。

監控IO使用率

psutil庫的io_counters()方法可以監控進程的IO操作,廢話不多說,上代碼:

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"讀取字節數: {io_counters.read_bytes}") # 要變成MB,需要除1024/1024
        print(f"寫入字節數: {io_counters.write_bytes}")
        time.sleep(1)
        
if __name__ == "__main__":
    target_process_id = os.getpid()  # 替換為你要監控的進程ID
    monitoring_duration = 60  # 監控持續時間(秒)
    monitor_io(target_process_id, monitoring_duration)

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

小工具代碼整合 上面3個小函數已經實現了監控我門常規的信息了,現在我們的要求是要同時監控,而不是監控完這個再監控那個,對吧。so 勇哥使用異步編程來簡單帶大伙玩一下,完整代碼如下:

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"讀取字節數: {io_counters.read_bytes / 1024 / 1024} MB")
        print(f"寫入字節數: {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"內存使用量: {memory_info.rss / (1024 * 1024):.2f} MB")
        print(f"內存使用率: {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("請輸入進程ID:"))
    duration = int(input("請輸入監控時長(秒):"))

    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())

責任編輯:趙寧寧 來源: 測試玩家勇哥
相關推薦

2015-03-22 06:25:23

監控寶云智慧

2023-11-10 08:56:49

Springboot常用的注解

2023-09-14 10:42:46

SQL數據庫

2010-01-26 08:58:17

Windows 7啟動時間

2010-03-10 09:06:58

Windows 7啟動時間

2009-11-24 18:20:16

曙光Gridview管理

2020-09-27 09:41:04

代碼開發注釋

2015-07-03 09:41:05

腳本編程編程語言比較

2023-10-07 09:34:03

數據可視化

2021-01-12 16:28:41

5G運營商韓國

2012-04-25 09:17:41

Google DrivMicrosoft SDropbox

2020-12-30 10:28:49

Windows 功能系統

2011-04-06 11:36:30

MRTG監控內存

2009-09-28 16:39:37

2014-08-21 11:12:01

QQ瀏覽器

2017-05-03 11:10:14

Linux進程監控cpustat

2021-03-12 14:06:03

谷歌代碼開發

2020-08-26 16:33:25

軟件視頻會議

2021-10-13 10:01:19

Windows 11操作系統微軟
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产综合久久久久久鬼色 | av喷水 | 97伦理电影网 | 99亚洲综合 | 色婷婷婷婷色 | 777zyz色资源站在线观看 | 久久久久亚洲av毛片大全 | www.久久久久久久久 | 国产在线中文 | 亚洲欧美一区二区三区视频 | 国产精品a久久久久 | 色综合美女| 日韩一及片| 一区二区三区精品视频 | 美女久久| 国产一区二区三区久久久久久久久 | 国产四区| 国产精品国产三级国产aⅴ原创 | 亚洲欧美在线视频 | 国产亚洲网站 | 青青草一区二区 | 国产三级一区二区 | 日韩精品一区二区在线观看 | 性欧美精品一区二区三区在线播放 | 久久久xxx| 91婷婷韩国欧美一区二区 | 国产精品久久久久永久免费观看 | 亚洲一区二区久久久 | 香蕉大人久久国产成人av | 日韩在线视频一区 | 夜夜爽99久久国产综合精品女不卡 | 神马久久久久久久久久 | 欧美三区 | 三级黄视频在线观看 | www.中文字幕 | 国产欧美日韩综合精品一区二区 | 一区二区三区视频在线 | 色综合久久久久 | 手机看黄av免费网址 | 亚洲一区 中文字幕 | 男人的天堂中文字幕 |