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}%")
獲取網(wǎng)絡信息
import psutil # 獲取網(wǎng)絡接口列表 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)控網(wǎng)絡流量
import psutil import time # 監(jiān)控網(wǎng)絡流量 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?dataframe獲取所有行名稱與列名稱方法示例
這篇文章主要給大家介紹了關于pandas?dataframe獲取所有行名稱與列名稱的相關資料,Pandas是Python中用于數(shù)據(jù)分析的非常重要的庫,它提供了多種方法來獲取列名,需要的朋友可以參考下2023-09-09Pytorch?和?Tensorflow?v1?兼容的環(huán)境搭建方法
這篇文章主要介紹了搭建Pytorch?和?Tensorflow?v1?兼容的環(huán)境,本文是小編經過多次實踐得到的環(huán)境配置教程,給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-11-11Python selenium模塊實現(xiàn)定位過程解析
這篇文章主要介紹了python selenium模塊實現(xiàn)定位過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-07-07