头图

大家好,我是涛哥,本文内容来自 涛哥聊Python ,转载请标原创。

今天为大家分享一个超强的 Python 库 - psutil。

Github地址:https://github.com/giampaolo/psutil


在现代软件开发中,系统监控和进程管理是必不可少的任务,尤其是在构建大型分布式系统或高性能应用时。Python 作为一种通用编程语言,提供了丰富的库和工具来处理这些任务之一。其中,psutil(Python System and Process Utilities)库是一个功能强大且广泛应用的工具,它为开发人员提供了一种简单而有效的方法来获取有关系统资源和运行中进程的信息。

简介

psutil 是一个跨平台的 Python 库,旨在提供对系统资源和进程的高级别接口。它不仅支持 Windows、Linux 和 macOS 等主流操作系统,还提供了一致的 API,使得在不同平台上编写的代码具有较高的可移植性。psutil 不仅易于使用,而且功能丰富,可以满足各种系统监控和进程管理的需求。

安装

可以通过 pip 工具轻松安装 psutil:

pip install psutil

主要功能

1. 获取系统信息

psutil 提供了丰富的函数来获取有关系统的各种信息,包括 CPU、内存、磁盘、网络等方面的数据。

以下是一些常用的系统信息获取函数:

  • psutil.cpu_percent():获取 CPU 使用率。
  • psutil.virtual_memory():获取内存使用情况。
  • psutil.disk_usage('/'):获取指定磁盘分区的使用情况。
  • psutil.net_io_counters():获取网络 I/O 统计信息。

2. 进程管理

psutil 使得管理系统中运行的进程变得非常简单。通过 psutil 提供的函数,可以轻松地获取进程列表、查找特定进程、终止进程等。

以下是一些常用的进程管理函数:

  • psutil.pids():获取当前所有进程的 PID 列表。
  • psutil.Process(pid):通过 PID 获取进程对象。
  • process.cpu_percent():获取指定进程的 CPU 使用率。
  • process.memory_info():获取指定进程的内存使用情况。
  • process.terminate():终止指定进程。

实际应用场景

1. 监控系统资源

import psutil

# 获取 CPU 使用率
cpu_usage = psutil.cpu_percent()
print("CPU Usage:", cpu_usage)

# 获取内存使用情况
mem_info = psutil.virtual_memory()
print("Memory Usage:", mem_info)

# 获取磁盘使用情况
disk_usage = psutil.disk_usage('/')
print("Disk Usage:", disk_usage)

# 获取网络 I/O 统计信息
net_io = psutil.net_io_counters()
print("Network I/O:", net_io)

2. 进程管理

import psutil

# 获取所有进程列表
all_processes = psutil.pids()
print("All Processes:", all_processes)

# 查找特定进程
for pid in all_processes:
    process = psutil.Process(pid)
    if 'python' in process.name():
        print("Python Process Found:", process)

# 终止指定进程
# process.terminate()

3. 监控 Web 服务器性能

import psutil
import time

def monitor_server_performance():
    while True:
        # 获取 CPU 使用率
        cpu_usage = psutil.cpu_percent()
        print("CPU Usage:", cpu_usage)

        # 获取内存使用情况
        mem_info = psutil.virtual_memory()
        print("Memory Usage:", mem_info)

        # 休眠 1 秒
        time.sleep(1)

monitor_server_performance()

4. 监控后台任务的资源消耗

import psutil

def monitor_background_tasks():
    while True:
        # 获取指定进程的 CPU 使用率
        process = psutil.Process(pid)
        cpu_percent = process.cpu_percent()
        print("Background Task CPU Usage:", cpu_percent)

        # 获取指定进程的内存使用情况
        mem_info = process.memory_info()
        print("Background Task Memory Usage:", mem_info)

        # 休眠 10 秒
        time.sleep(10)

monitor_background_tasks()

高级功能

除了常规的系统监控和进程管理功能之外,psutil 还提供了一些高级功能,可以进一步增强其实用性和灵活性。

1. 监控进程的子进程

通过 psutil,可以轻松地监控一个进程的所有子进程,并获取它们的详细信息。这对于某些需要管理多个相关进程的应用程序来说尤为重要。

import psutil

# 获取指定进程的所有子进程
parent_process = psutil.Process(pid)
children = parent_process.children(recursive=True)
print("Children Processes:", children)

2. 监控进程的文件IO

psutil 还支持监控进程的文件 IO 操作,包括读写操作的次数和字节数等信息。这对于诊断进程的性能问题或查找异常操作非常有用。

import psutil

# 获取指定进程的文件 IO 统计信息
process = psutil.Process(pid)
io_counters = process.io_counters()
print("IO Counters:", io_counters)

3. 监控进程的网络连接

psutil 可以查看指定进程当前建立的所有网络连接,包括连接的远程地址和端口等信息。这对于网络相关的应用程序监控和安全审计非常有帮助。

import psutil

# 获取指定进程的网络连接列表
process = psutil.Process(pid)
connections = process.connections()
print("Network Connections:", connections)

总结

psutil 是一个功能强大且易于使用的 Python 库,提供了丰富的功能来监控和管理系统资源以及运行的进程。无论是对于系统管理员还是开发人员来说,psutil 都是一个不可或缺的工具,能够更好地了解和控制系统的状态。通过本文的介绍和示例代码,相信已经对 psutil 有了更深入的理解,并能够在实际项目中灵活应用。


涛哥聊Python
59 声望37 粉丝