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
  • 範例程式
  1. import psutil
  2. import os
  3. mem = psutil.virtual_memory()
  4. print ('總實體記憶體 : %.4f GB' % (mem.total / 1024 / 1024 / 1024))
  5. print ('可用的記憶體 : %.4f GB' % (mem.available / 1024 / 1024 / 1024))
  6. print ('使用的記憶體 : %.4f GB' % (mem.used / 1024 / 1024 / 1024))
  7. print ('完全沒有使用的記憶體 : %.4f GB' % (mem.free / 1024 / 1024 / 1024))

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

psutil 系統監控模組能夠擷取大量有關處理器的監控資料,協助開發者有效掌握核心處理器的使用狀況與效率。

此外,透過 platform 模組,還可以進一步取得核心處理器的名稱等系統相關資訊。

  • 範例程式
  1. import platform
  2. import psutil
  3. print ("處理器的核心數目 : {0}".format(psutil.cpu_count()))
  4. print (platform.processor())

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

psutil 系統監控模組提供了取得磁碟(Disk)資訊的功能,包括磁碟的總容量、已使用空間、可用空間,以及整體的使用率。

  • 範例程式
  1. import psutil
  2. du = psutil.disk_usage('/')
  3. print("磁碟機的總容量 : {0} GB".format(du.total / 1024 / 2014 / 1024))
  4. print("磁碟機的使用容量 : {0} GB".format(du.used / 1024 / 2014 / 1024))
  5. print("磁碟機的閒置容量 : {0} GB".format(du.free / 1024 / 2014 / 1024))
  6. print("磁碟機的使用比率 : {0} %".format(du.percent))

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

psutil 系統監控模組提供網路裝置相關的監控功能,包括網路裝置的掃描、使用情況,以及資料傳輸(Tx)與接收(Rx)的監控資訊。

  • 範例程式
  1. import psutil
  2. netIfAddrs = psutil.net_if_addrs()
  3. for interface_name, interface_addresses in netIfAddrs.items():
  4. for address in interface_addresses:
  5. print(f"=== Interface: {interface_name} ===")
  6. if str(address.family) == 'AddressFamily.AF_INET':
  7. print(f" IP Address: {address.address}")
  8. print(f" Netmask: {address.netmask}")
  9. print(f" Broadcast IP: {address.broadcast}")
  10. elif str(address.family) == 'AddressFamily.AF_PACKET':
  11. print(f" MAC Address: {address.address}")
  12. print(f" Netmask: {address.netmask}")
  13. print(f" Broadcast MAC: {address.broadcast}")

留言

這個網誌中的熱門文章

EC 所需知識 - SMBUS

EC 所需知識 - KBC

EC 所需知識 - LPC