python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python psutil

Python利用psutil库进行监控进程和资源

作者:Sitin涛哥

psutil是Python系统和进程工具库,它提供了一种跨平台的方式来获取系统信息、管理系统进程、监控系统性能、操作系统资源等,下面就跟随小编一起来学习psutil库的具体应用吧

Python作为一门强大的编程语言,拥有丰富的标准库和第三方库,使得开发者可以轻松完成各种任务。在系统监控和管理方面,psutil库无疑是一个强大的工具,它可以轻松地获取系统信息、管理进程、监控系统性能等。本文将深入探讨psutil库,介绍它的基本概念、用法和示例代码,帮助大家更好地理解和利用这个强大的库。

什么是psutil库

psutil是Python系统和进程工具库(Python System and Process Utilities)。它提供了一种跨平台的方式来获取系统信息、管理系统进程、监控系统性能、操作系统资源等。无论是在Windows、Linux还是macOS,psutil都能提供一致的API,使得开发者可以轻松地编写跨平台的代码。

安装psutil库

要开始使用psutil库,首先需要安装它。

可以使用pip来进行安装:

pip install psutil

安装完成后,就可以导入并开始使用psutil库了。

import psutil

获取系统信息

获取CPU信息

import psutil

# 获取CPU核心数
cpu_count = psutil.cpu_count(logical=False)
print(f"Physical CPU Count: {cpu_count}")

# 获取逻辑CPU核心数(包括超线程)
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

# 获取所有磁盘分区信息
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("")

# 获取指定分区的使用情况
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']}")

# 根据进程名称查询进程
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']}")

创建新进程

import psutil
import subprocess

# 创建新进程
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

# 根据进程名称终止进程
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}")

监控系统性能

监控CPU利用率

import psutil
import time

# 监控CPU利用率
for _ in range(5):
    cpu_percent = psutil.cpu_percent(interval=1)
    print(f"CPU Usage: {cpu_percent}%")
    time.sleep(1)

监控内存使用量

import psutil
import time

# 监控内存使用量
for _ in range(5):
    memory_usage = psutil.virtual_memory().percent
    print(f"Memory Usage: 1.15MB%")
    time.sleep(1)

监控磁盘IO

import psutil
import time

# 监控磁盘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)

监控网络流量

import psutil
import time

# 监控网络流量
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)

操作系统资源

获取用户信息

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中用于系统监控和管理的强大工具,它提供了丰富的功能来获取系统信息、管理进程、监控系统性能等。本文介绍了psutil库的基本用法和示例代码,帮助大家更好地理解和利用这个库。无论是用于系统管理、性能监控、自动化任务还是系统信息收集,psutil都是一个不可或缺的Python神器。

以上就是Python利用psutil库进行监控进程和资源的详细内容,更多关于Python psutil的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文