Python库组合:psutil与argh,监控系统与命令行轻松搞定!

阿琳的代码小屋 2025-04-19 22:03:00

在Python的海洋中,有两个库非常有趣,分别是psutil和argh。psutil用于获取系统监控信息,比如CPU、内存、磁盘等的使用情况,绝对是一个优秀的性能监控工具。而argh则是一个轻便的命令行参数解析库,让你轻松创建命令行工具,简单易用。这两个库的强强联手,可以帮助我们构建出既能监控系统性能,又能通过命令行进行交互的工具。接下来咱们看看如何用这两个库做一些实际的事情。

我们先从第一个例子开始,创建一个简单的命令行工具,以监控CPU和内存的使用情况。在这个实例中,我们能通过简单的命令行指令来获取系统当前的CPU和内存使用信息,是否很酷呢?先安装这两个库,可以通过以下命令进行安装:

pip install psutil argh

接下来,咱们来看代码。我们会使用argh来定义命令行参数,同时用psutil监控系统。

import psutilimport argh@argh.arg('show_memory', help='Show memory usage')@argh.arg('show_cpu', help='Show CPU usage')def monitor_system(show_memory=False, show_cpu=False):    if show_memory:        memory_info = psutil.virtual_memory()        print(f"Memory Usage: {memory_info.percent}%")    if show_cpu:        cpu_usage = psutil.cpu_percentage(interval=1)        print(f"CPU Usage: {cpu_usage}%")if __name__ == '__main__':    argh.dispatch_command(monitor_system)

运行这个脚本时,如果想查看内存使用情况,可以使用命令 python script.py --show_memory,要查看CPU情况则用 python script.py --show_cpu。很简单吧?这个代码利用了argh来定义命令行参数,而psutil则负责取出系统信息。通过这个组合,既能监控系统状态,又提供了友好的命令行交互。

接着咱们看看第二个例子,我们可以把psutil和argh结合起来制作一个简单的进程监控程序。这程序能够通过命令行获取所有运行中的进程,并查看某个特定进程的详细信息。这个工具在调试程序或查看系统状况时特别有用。

import psutilimport arghdef list_processes():    processes = psutil.process_iter(['pid', 'name', 'status'])    for proc in processes:        print(f'PID: {proc.info["pid"]}, Name: {proc.info["name"]}, Status: {proc.info["status"]}')@argh.arg('pid', help='Process ID to show details')def show_process_details(pid):    try:        process = psutil.Process(pid)        print(f"Details of Process {pid}:")        print(f"Name: {process.name()}")        print(f"Status: {process.status()}")        print(f"Memory Info: {process.memory_info()}")    except psutil.NoSuchProcess:        print("No process found with the provided PID.")if __name__ == '__main__':    argh.dispatch_commands([list_processes, show_process_details])

在这个例子中,运行 python script.py list_processes 可以展示出当前所有进程的详细信息,如果想查看某个进程的详细资料,可以用 python script.py show_process_details <pid>。这种结合让进程监控变得简单明了,极大地方便了日常开发与调试。

最后,我们可以举一个更复杂的例子。借助psutil了解网络流量和连接信息,并结合argh查看。这个功能在监控网络性能时非常有挑战性,同时也很有趣。

import psutilimport arghdef show_network_info():    net_info = psutil.net_if_stats()    for adapter, info in net_info.items():        print(f"Adapter: {adapter}")        print(f"  Is up: {info.isup}")        print(f"  Duplex: {info.duplex}")        print(f"  Speed: {info.speed} Mbps")    print('\nCurrent Connections: ')    connections = psutil.net_connections()    for conn in connections:        print(f"Type: {conn.type}, Local Address: {conn.laddr}, Remote Address: {conn.raddr}, Status: {conn.status}")if __name__ == '__main__':    argh.dispatch_command(show_network_info)

运行这个脚本 python script.py show_network_info,能够展示当前的网络适配器、其状态以及连接情况。这个工具能帮助你实时监控网络性能,让你的应用运行得更加流畅。

结合psutil和argh进行开发的时候,偶尔也会遇到一些问题,比如psutil获取信息时可能因为权限不够导致失败,特别是在某些操作系统上运行。如果遇到这样的情况,确保你的脚本以管理员权限运行,或者考虑用try-except来捕获这些异常,优雅地处理。

总的来说,psutil和argh的结合让你可以轻松创建功能强大的系统监控工具,无论是获取内存、CPU、进程,还是网络情况,都能随心所欲。如果你在使用这两个库的过程中有任何疑问,随时可以留言联系我,咱们一起来探讨与学习。希望这些例子能激发你的创新,让你在Python的世界中更进一步!

0 阅读:1