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