Page cover

python性能优化模块


系统监控模块

psutil模块

psutil模块文档

psutil是一个跨平台库(http://pythonhosted.org/psutil/)能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。它主要用来做系统监控,性能分析,进程管理。它实现了同等命令行工具提供的功能,如ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap等。

一、 安装psutil

  pip install psutil

二、 监控cpu信息

  • import psutil

  • psutil.cpu_times() #获取cpu(逻辑cpu的平均)占用时间的详细信息

  • psutil.cpu_times(percpu=True) #获取每个cpu占用时间的详细信息

  • psutil.cpt_times().user #获取用户进程占用cpu的时间(user+sys+idle+wait=total)

三、 监控内存信息

  • import psutil

  • psutil.virtual_memory() #获取内存信息

  • psutil.virtual_memory().total #获取内存总量

  • psutil.swap_memory() #获取swap信息

  • psutil.swqp_memory() #获取swap总量

四、 监控磁盘信息

  • import psutil

  • psutil.disk_partitions() #获取各分区的信息

  • psutil.disk_usage() #获取各分区的使用情况

  • psutil.disk_io_counters(perdisk=True) #获取各个分区的io情况

  • psutil.disk_io_counters(perdisk=True)['sda1'].read_count #获取sda1的io读取情况

五、 监控网络信息

  • import psutil

  • psutil.net_io_counters() #获取所有网络接口io信息

  • psutil.net_io_counters(pernic=True) #获取每个网络接口的io信息

六、进程信息

  • import psutil

  • psutil.Process(pid) #查看对应pid的进程信息

  • psutil.Process(pid).username() #查看是哪个用户创建的该进程

  • psutil.Process(pid).cmdline() #查看进程所在的路径

七、 登录用户信息

  • import psutil

  • psutil.users() #查看目前登录用户信息

例子

output

时间监控

cProfile介绍

cProfile官方文档

  • cProfile自python2.5以来就是标准版Python解释器默认的性能分析器。

  • 其他版本的python,比如PyPy里没有cProfile的。

  • cProfile是一种确定性分析器,只测量CPU时间,并不关心内存消耗和其他与内存相关联的信息。

cProfile模块

时间监控装饰器

内存监控

tracemalloc介绍

tracemalloc模块官方文档

tracemalloc模块是跟踪python分配的内存块的调试工具。它提供以下信息:

  • 回溯对象的分配位置

  • 每个文件名和每个行号的已分配内存块的统计信息:已分配内存块的总大小、数量和平均大小

  • 计算两个快照之间的差异以检测内存泄漏

tracemalloc模块

内存监控装饰器

最后更新于

这有帮助吗?