Python利用psutil庫進行監(jiān)控進程和資源
Python作為一門強大的編程語言,擁有豐富的標準庫和第三方庫,使得開發(fā)者可以輕松完成各種任務。在系統(tǒng)監(jiān)控和管理方面,psutil庫無疑是一個強大的工具,它可以輕松地獲取系統(tǒng)信息、管理進程、監(jiān)控系統(tǒng)性能等。本文將深入探討psutil庫,介紹它的基本概念、用法和示例代碼,幫助大家更好地理解和利用這個強大的庫。
什么是psutil庫
psutil是Python系統(tǒng)和進程工具庫(Python System and Process Utilities)。它提供了一種跨平臺的方式來獲取系統(tǒng)信息、管理系統(tǒng)進程、監(jiān)控系統(tǒng)性能、操作系統(tǒng)資源等。無論是在Windows、Linux還是macOS,psutil都能提供一致的API,使得開發(fā)者可以輕松地編寫跨平臺的代碼。
安裝psutil庫
要開始使用psutil庫,首先需要安裝它。
可以使用pip來進行安裝:
pip install psutil
安裝完成后,就可以導入并開始使用psutil庫了。
import psutil
獲取系統(tǒng)信息
獲取CPU信息
import psutil
# 獲取CPU核心數(shù)
cpu_count = psutil.cpu_count(logical=False)
print(f"Physical CPU Count: {cpu_count}")
# 獲取邏輯CPU核心數(shù)(包括超線程)
logical_cpu_count = psutil.cpu_count(logical=True)
print(f"Logical CPU Count: {logical_cpu_count}")
# 獲取CPU使用率
cpu_usage = psutil.cpu_percent(interval=1, percpu=True)
for i, usage in enumerate(cpu_usage, 1):
print(f"CPU {i} Usage: {usage}%")
獲取內存信息
import psutil
# 獲取內存總量
total_memory = psutil.virtual_memory().total
print(f"Total Memory: {total_memory / (1024 ** 3):.2f} GB")
# 獲取可用內存
available_memory = psutil.virtual_memory().available
print(f"Available Memory: {available_memory / (1024 ** 3):.2f} GB")
# 獲取內存使用率
memory_usage = psutil.virtual_memory().percent
print(f"Memory Usage: 1.15MB%")
獲取磁盤信息
import psutil
# 獲取所有磁盤分區(qū)信息
disk_partitions = psutil.disk_partitions()
for partition in disk_partitions:
print(f"Device: {partition.device}")
print(f"Mountpoint: {partition.mountpoint}")
print(f"Fstype: {partition.fstype}")
print("")
# 獲取指定分區(qū)的使用情況
disk_usage = psutil.disk_usage("/")
print(f"Total: {disk_usage.total / (1024 ** 3):.2f} GB")
print(f"Used: {disk_usage.used / (1024 ** 3):.2f} GB")
print(f"Free: {disk_usage.free / (1024 ** 3):.2f} GB")
print(f"Usage: {disk_usage.percent}%")
獲取網絡信息
import psutil
# 獲取網絡接口列表
network_interfaces = psutil.net_if_addrs()
for interface, addresses in network_interfaces.items():
print(f"Interface: {interface}")
for address in addresses:
print(f" Family: {address.family}")
print(f" Address: {address.address}")
print(f" Netmask: {address.netmask}")
print(f" Broadcast: {address.broadcast}")
print("")
管理進程
查詢進程信息
import psutil
# 獲取所有進程列表
all_processes = psutil.process_iter(attrs=['pid', 'name'])
for process in all_processes:
print(f"Process ID: {process.info['pid']}, Name: {process.info['name']}")
# 根據(jù)進程名稱查詢進程
process_name = "python3"
process_list = [p.info for p in all_processes if p.info['name'] == process_name]
for process in process_list:
print(f"Process ID: {process['pid']}, Name: {process['name']}")
創(chuàng)建新進程
import psutil
import subprocess
# 創(chuàng)建新進程
subprocess.Popen(["notepad.exe"])
# 檢查進程是否存在
process_name = "notepad.exe"
is_running = any(process.info['name'] == process_name for process in psutil.process_iter(attrs=['name']))
print(f"{process_name} is running: {is_running}")
終止進程
import psutil
# 根據(jù)進程名稱終止進程
process_name = "notepad.exe"
for process in psutil.process_iter(attrs=['name']):
if process.info['name'] == process_name:
process.terminate()
print(f"Terminated {process_name}")
監(jiān)控系統(tǒng)性能
監(jiān)控CPU利用率
import psutil
import time
# 監(jiān)控CPU利用率
for _ in range(5):
cpu_percent = psutil.cpu_percent(interval=1)
print(f"CPU Usage: {cpu_percent}%")
time.sleep(1)
監(jiān)控內存使用量
import psutil
import time
# 監(jiān)控內存使用量
for _ in range(5):
memory_usage = psutil.virtual_memory().percent
print(f"Memory Usage: 1.15MB%")
time.sleep(1)
監(jiān)控磁盤IO
import psutil
import time
# 監(jiān)控磁盤IO
for _ in range(5):
disk_io = psutil.disk_io_counters()
print(f"Read
Count: {disk_io.read_count}")
print(f"Write Count: {disk_io.write_count}")
time.sleep(1)
監(jiān)控網絡流量
import psutil
import time
# 監(jiān)控網絡流量
for _ in range(5):
network_io = psutil.net_io_counters()
print(f"Bytes Sent: {network_io.bytes_sent} bytes")
print(f"Bytes Received: {network_io.bytes_recv} bytes")
time.sleep(1)
操作系統(tǒng)資源
獲取用戶信息
import psutil
# 獲取當前用戶信息
user_info = psutil.users()
for user in user_info:
print(f"User: {user.name}")
print(f"Terminal: {user.terminal}")
print(f"Host: {user.host}")
print("")
獲取虛擬內存信息
import psutil
# 獲取虛擬內存信息
virtual_memory = psutil.virtual_memory()
print(f"Total: {virtual_memory.total / (1024 ** 3):.2f} GB")
print(f"Used: {virtual_memory.used / (1024 ** 3):.2f} GB")
print(f"Free: {virtual_memory.free / (1024 ** 3):.2f} GB")
print(f"Usage: {virtual_memory.percent}%")
安全性和權限考慮
在使用psutil庫時,需要注意安全性和權限問題。某些功能可能需要管理員權限或超級用戶權限才能訪問,例如終止進程、查詢其他用戶的進程等。確保你的程序以合適的權限運行,以避免潛在的問題。
總結
psutil庫是Python中用于系統(tǒng)監(jiān)控和管理的強大工具,它提供了豐富的功能來獲取系統(tǒng)信息、管理進程、監(jiān)控系統(tǒng)性能等。本文介紹了psutil庫的基本用法和示例代碼,幫助大家更好地理解和利用這個庫。無論是用于系統(tǒng)管理、性能監(jiān)控、自動化任務還是系統(tǒng)信息收集,psutil都是一個不可或缺的Python神器。
以上就是Python利用psutil庫進行監(jiān)控進程和資源的詳細內容,更多關于Python psutil的資料請關注腳本之家其它相關文章!
相關文章
Pandas中數(shù)據(jù)離散化的實現(xiàn)
Pandas中數(shù)據(jù)離散化是將連續(xù)變量轉換為離散類別的過程,本文就來介紹一下Pandas中數(shù)據(jù)離散化的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-12-12
Python flask框架實現(xiàn)查詢數(shù)據(jù)庫并顯示數(shù)據(jù)
這篇文章主要介紹了Python flask框架實現(xiàn)查詢數(shù)據(jù)庫并顯示數(shù)據(jù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-06-06
urllib和BeautifulSoup爬取維基百科的詞條簡單實例
這篇文章主要介紹了urllib和BeautifulSoup爬取維基百科的詞條簡單實例,具有一定借鑒價值,需要的朋友可以參考下2018-01-01
python的xpath獲取div標簽內html內容,實現(xiàn)innerhtml功能的方法
今天小編就為大家分享一篇python的xpath獲取div標簽內html內容,實現(xiàn)innerhtml功能的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01

