Python 系統程式模組簡介

如何取得電腦記憶體資訊

所有的程式都需要搬到系統記憶體才能夠被執行到,因此,系統記憶體的大小,可使用的空間,都會影影響到程式開發者,如何配置應用程式碼和資料都需和作業系統取得應用程式可使用的空間。例如把沒有經常使用的程式放到硬碟而不佔系統記憶體空間。


psutil 系統監按模組 能夠讓程式開發者可以輕鬆的監控系統中執行的程序和系統資源的使用率(包含處理器,記憶體,磁碟等)資訊.

  • psutil 模組安裝
    • $pip3 install psutil

  • 獲得記憶體大小 [psutil 說明文件]
    • psutil.virtual_memory() - 取得系統記憶體靜態使用狀態
      • total: total physical memory
      • available: the memory that can be given instantly to processes without the system going into swap
      • used: memory used
      • free: memory not being used at all
  • 範例程式
import psutil
import os

mem = psutil.virtual_memory()
print ('總實體記憶體 : %.4f GB' % (mem.total / 1024 / 1024 / 1024))
print ('可用的記憶體 : %.4f GB' % (mem.available / 1024 / 1024 / 1024))
print ('使用的記憶體 : %.4f GB' % (mem.used / 1024 / 1024 / 1024))
print ('完全沒有使用的記憶體 : %.4f GB' % (mem.free / 1024 / 1024 / 1024))

如何取得電腦的核心處理器的資訊

psutil 系統監按模組能捉到核心處理器的很多監控的資料來有效監控核心處理器的使用效率,在此,使用用了另一個 platform 的模組, 可以取得核心處理器的名稱

  • 範例程式
import platform
import psutil

print ("處理器的核心數目 : {0}".format(psutil.cpu_count()))
print (platform.processor())

如何取得電腦的磁碟的資訊

psutil 系統監按模組提供取得系統的磁碟(DISK)的總容量,使用容量, 閒置空間和磁碟的使用率

  • 範例程式
import psutil

du = psutil.disk_usage('/')
print("磁碟機的總容量 : {0} GB".format(du.total / 1024 / 2014 / 1024))
print("磁碟機的使用容量 : {0} GB".format(du.used / 1024 / 2014 / 1024))
print("磁碟機的閒置容量 : {0} GB".format(du.free / 1024 / 2014 / 1024))
print("磁碟機的使用比率 : {0} %".format(du.percent))

如何取得電腦的網路的資訊

psutil 系統監按模組提供取得系統的網路裝置的掃描,使用情況,Tx/Rx 的監控功能

  • 範例程式
import psutil
netIfAddrs = psutil.net_if_addrs()
for interface_name, interface_addresses in netIfAddrs.items():
    for address in interface_addresses:
        print(f"=== Interface: {interface_name} ===")
        if str(address.family) == 'AddressFamily.AF_INET':
            print(f"  IP Address: {address.address}")
            print(f"  Netmask: {address.netmask}")
            print(f"  Broadcast IP: {address.broadcast}")
        elif str(address.family) == 'AddressFamily.AF_PACKET':
            print(f"  MAC Address: {address.address}")
            print(f"  Netmask: {address.netmask}")
            print(f"  Broadcast MAC: {address.broadcast}")  
  

留言

這個網誌中的熱門文章

EC 所需知識 - SMBUS

EC 所需知識 - KBC

EC 所需知識 - LPC