python psutil有哪些最佳實(shí)踐

小樊
81
2024-11-19 05:06:36

Python psutil庫(kù)是一個(gè)用于監(jiān)控和管理系統(tǒng)的功能強(qiáng)大的工具

  1. 導(dǎo)入psutil庫(kù): 在使用psutil之前,確保已經(jīng)安裝了該庫(kù)。如果尚未安裝,可以使用以下命令進(jìn)行安裝:

    pip install psutil
    

    然后在代碼中導(dǎo)入psutil庫(kù):

    import psutil
    
  2. 獲取系統(tǒng)信息: 使用psutil可以輕松獲取系統(tǒng)的CPU、內(nèi)存、磁盤(pán)和網(wǎng)絡(luò)信息。例如:

    # 獲取CPU信息
    cpu_info = psutil.cpu_percent()
    print(f"CPU Usage: {cpu_info}%")
    
    # 獲取內(nèi)存信息
    memory_info = psutil.virtual_memory()
    print(f"Total Memory: {memory_info.total / (1024 * 1024)} MB")
    
    # 獲取磁盤(pán)信息
    disk_info = psutil.disk_usage('/')
    print(f"Total Disk Space: {disk_info.total / (1024 * 1024)} MB")
    
    # 獲取網(wǎng)絡(luò)信息
    net_info = psutil.net_io_counters()
    print(f"Bytes Sent: {net_info.bytes_sent}")
    print(f"Bytes Received: {net_info.bytes_recv}")
    
  3. 監(jiān)控資源使用情況: 可以使用psutil定期檢查系統(tǒng)的資源使用情況,以便在性能問(wèn)題發(fā)生時(shí)及時(shí)發(fā)現(xiàn)并采取措施。例如,可以使用time.sleep()函數(shù)在循環(huán)中定期獲取CPU和內(nèi)存使用情況:

    import time
    while True:
        cpu_usage = psutil.cpu_percent()
        memory_usage = psutil.virtual_memory().percent
        print(f"CPU Usage: {cpu_usage}%")
        print(f"Memory Usage: {memory_usage}%")
        time.sleep(5)  # 每5秒檢查一次
    
  4. 異常處理: 在使用psutil時(shí),可能會(huì)遇到一些異常情況,例如訪問(wèn)受限的資源。為了避免程序崩潰,應(yīng)該使用try-except語(yǔ)句進(jìn)行異常處理:

    try:
        process = psutil.Process(pid=1234)
        cpu_times = process.cpu_times()
        print(f"User Time: {cpu_times.user} seconds")
        print(f"System Time: {cpu_times.system} seconds")
    except psutil.NoSuchProcess:
        print("Process not found")
    except psutil.AccessDenied:
        print("Permission denied")
    
  5. 使用其他模塊: psutil庫(kù)與其他模塊(如datetime)結(jié)合使用,可以更方便地處理和展示數(shù)據(jù)。例如,可以將收集到的系統(tǒng)信息寫(xiě)入日志文件:

    import datetime
    with open("system_log.txt", "a") as log_file:
        log_file.write(f"{datetime.datetime.now()} - CPU Usage: {cpu_info}%\n")
        log_file.write(f"{datetime.datetime.now()} - Memory Usage: {memory_usage}%\n")
    

遵循這些最佳實(shí)踐,可以確保在使用Python psutil庫(kù)時(shí)編寫(xiě)出高效、穩(wěn)定且易于維護(hù)的代碼。

0