py并发_psutil模块

获取全部进程信息

1
2
3
4
5
6
7
import psutil
def main():
for process in psutil.process_iter(): # 获取全部进程
print("进程编号:%d、进程名称:%s、创建时间:%s" % (
process.pid, process.name(), process.create_time()))
if __name__ == "__main__":
main()

、、、

进程编号:14908、进程名称:chrome.exe、创建时间:1580358188.0
进程编号:15168、进程名称:TIMApp.exe、创建时间:1580359395.0
进程编号:15312、进程名称:pycharm64.exe、创建时间:1580359547.0
进程编号:16732、进程名称:RuntimeBroker.exe、创建时间:1580360597.0
进程编号:17044、进程名称:chrome.exe、创建时间:1580359677.0

进程已结束,退出代码0

根据进程名强制关闭进程

psutil可以直接与操作系统的进程交互,可以直接进行操作系统的进程控制

1
2
3
4
5
6
7
8
import psutil
def main():
for process in psutil.process_iter(): # 获取全部进程
if process.name() == "notepad.exe":
process.terminate() #进程中断
print("发现“notepad.exe”进程,已经强制关闭。。。。")
if __name__ == "__main__":
main()

发现“notepad.exe”进程,已经强制关闭。。。。
发现“notepad.exe”进程,已经强制关闭。。。。
发现“notepad.exe”进程,已经强制关闭。。。。
发现“notepad.exe”进程,已经强制关闭。。。。
发现“notepad.exe”进程,已经强制关闭。。。。

进程已结束,退出代码0

监控CPU使用率

1
2
3
4
5
6
7
8
9
10
11
import psutil
def main():
print("物理CPU数量:%d" % psutil.cpu_count(logical=False))
print("逻辑CPU数量:%d" % psutil.cpu_count(logical=True))
print("用户CPU使用时间:%f、系统CPU使用时间:%f、CPU空闲时间:%s" %(
psutil.cpu_times().user, psutil.cpu_times().system, psutil.cpu_times().idle))
for x in range(10): # 获取10次CPU的使用率
print("CPU使用率监控:%s" % # 每隔一秒进行每个CPU的监控
psutil.cpu_percent(interval=1, percpu=True))
if __name__ == "__main__":
main()

物理CPU数量:4
逻辑CPU数量:8
用户CPU使用时间:1432.375000、系统CPU使用时间:1737.125000、CPU空闲时间:32077.078124999996
CPU使用率监控:[36.2, 0.0, 4.7, 6.2, 15.4, 9.2, 1.6, 39.7]
CPU使用率监控:[20.0, 0.0, 1.6, 1.6, 0.0, 3.1, 1.6, 21.5]
CPU使用率监控:[14.9, 1.6, 6.2, 1.6, 7.8, 0.0, 4.7, 17.9]
CPU使用率监控:[7.6, 3.1, 1.6, 0.0, 10.8, 1.6, 4.7, 9.0]
CPU使用率监控:[13.6, 3.1, 3.1, 1.6, 6.2, 1.6, 6.2, 3.1]
CPU使用率监控:[11.9, 0.0, 1.6, 0.0, 0.0, 1.6, 0.0, 4.6]
CPU使用率监控:[9.1, 0.0, 3.1, 1.6, 10.9, 3.1, 7.8, 10.4]
CPU使用率监控:[11.9, 1.6, 1.6, 0.0, 1.6, 0.0, 4.7, 0.0]
CPU使用率监控:[25.4, 0.0, 1.6, 1.6, 7.8, 0.0, 7.8, 26.8]
CPU使用率监控:[22.5, 0.0, 4.7, 1.6, 7.8, 3.1, 4.7, 11.8]

进程已结束,退出代码0

获取磁盘信息

1
2
3
4
5
6
7
import psutil
def main():
print("[磁盘分区]获取全部磁盘信息:%s" % psutil.disk_partitions())
print("[磁盘使用率]获取“E”磁盘的使用率:%s" % str(psutil.disk_usage("e:"))) #默认为C盘
print("[磁盘IO]获取磁盘IO使用率:%s" % str(psutil.disk_io_counters()))
if __name__ == "__main__":
main()

[磁盘分区]获取全部磁盘信息:[sdiskpart(device=’C:\‘, mountpoint=’C:\‘, fstype=’NTFS’, opts=’rw,fixed’), sdiskpart(device=’D:\‘, mountpoint=’D:\‘, fstype=’NTFS’, opts=’rw,fixed’), sdiskpart(device=’E:\‘, mountpoint=’E:\‘, fstype=’NTFS’, opts=’rw,fixed’), sdiskpart(device=’F:\‘, mountpoint=’F:\‘, fstype=’NTFS’, opts=’rw,fixed’), sdiskpart(device=’G:\‘, mountpoint=’G:\‘, fstype=’NTFS’, opts=’rw,fixed’), sdiskpart(device=’I:\‘, mountpoint=’I:\‘, fstype=’’, opts=’cdrom’)]
[磁盘使用率]获取“E”磁盘的使用率:sdiskusage(total=268434403328, used=162632204288, free=105802199040, percent=60.6)
[磁盘IO]获取磁盘IO使用率:sdiskio(read_count=338009, write_count=72679, read_bytes=7007559680, write_bytes=2671072256, read_time=1322, write_time=186)

进程已结束,退出代码0

获取网络相关

1
2
3
4
5
6
7
8
# coding: UTF-8
import psutil
def main():
print("[数据统计]网络数据交互信息:%s" % str(psutil.net_io_counters()))
print("[接口统计]网络接口信息:%s" % str(psutil.net_if_addrs()))
print("[接口状态]网络接口状态:%s" % str(psutil.net_if_stats()))
if __name__ == "__main__":
main()

结果:略

总结

python语言可以直接与底层的硬件交互,所以python就特别适合在自动化运维上


py并发_psutil模块
https://blog.wangxk.cc/2020/01/30/py并发-psutil模块/
作者
Mike
发布于
2020年1月30日
许可协议