Python系统信息监控

来自CloudWiki
Cloud17讨论 | 贡献2020年1月17日 (五) 01:08的版本
跳转至: 导航搜索

在Python中获取系统信息最便捷的模块是psutil(process and system utilities)。通过简短的几行代码就可以获取系统相关信息,而且还是跨平台库。psutil不属于标准库,需要手动安装。安装psutil非常简单,执行以下命令即可。

pip install psutil

获取CPU信息

In [1]: import psutil

In [2]: psutil.cpu_times()
Out[2]: scputimes(user=274971.40625, system=399154.53125, idle=1959806.1875, interrupt=13831.578125, dpc=5731.515625)

In [3]: psutil.cpu_times(percpu=True)
Out[3]:
[scputimes(user=69532.3125, system=121357.06250000006, idle=467653.01562499994, interrupt=6815.046875, dpc=3065.390625),
 scputimes(user=55834.59375, system=84942.84375000006, idle=517764.23437499994, interrupt=3982.78125, dpc=1313.03125),
 scputimes(user=81075.28125, system=110418.953125, idle=467047.375, interrupt=1964.03125, dpc=1013.953125),
 scputimes(user=68573.21875, system=82476.46875, idle=507491.953125, interrupt=1070.84375, dpc=339.671875)]

In [4]: psutil.cpu_count()
Out[4]: 4
In [5]: psutil.cpu_count(logical=False)
Out[5]: 2

In [6]: psutil.cpu_percent()
Out[6]: 40.7

In [7]: psutil.cpu_percent(percpu=True)
Out[7]: [39.4, 32.8, 46.0, 43.3]

监控内存和硬盘

In [8]: psutil.virtual_memory()
Out[8]: svmem(total=17057337344, available=4142526464, percent=75.7, used=12914810880, free=4142526464)

In [9]: psutil.disk_partitions()
Out[9]:
[sdiskpart(device='C:\\', mountpoint='C:\\', fstype='NTFS', opts='rw,fixed'),
 sdiskpart(device='D:\\', mountpoint='D:\\', fstype='NTFS', opts='rw,fixed'),
 sdiskpart(device='F:\\', mountpoint='F:\\', fstype='', opts='cdrom')]

。。。

监控网络信息:

In [10]:  psutil.net_io_counters()
Out[10]: snetio(bytes_sent=8445215479, bytes_recv=7761730094, packets_sent=5203357, packets_recv=10378093, errin=0, errout=0, dropin=0, dropout=0)

In [11]:  psutil.net_if_addrs()
Out[11]:
{'VPN - Driver': [snicaddr(family=<AddressFamily.AF_LINK: -1>, address='00-AC-AC-2C-4C-8C', netmask=None, broadcast=None, ptp=None),
  snicaddr(family=<AddressFamily.AF_INET: 2>, address='169.254.252.233', netmask='255.255.0.0', broadcast=None, ptp=None),
  snicaddr(family=<AddressFamily.AF_INET6: 23>, address='fe80::68d0:7a05:cf58:fce9', netmask=None, broadcast=None, ptp=None)],
 '以太网': [snicaddr(family=<AddressFamily.AF_LINK: -1>, address='50-7B-9D-99-AE-C6', netmask=None, broadcast=None, ptp=None),
  snicaddr(family=<AddressFamily.AF_INET: 2>, address='169.254.247.20', netmask='255.255.0.0', broadcast=None, ptp=None),
  snicaddr(family=<AddressFamily.AF_INET6: 23>, address='fe80::2c1b:6dc0:feac:f714', netmask=None, broadcast=None, ptp=None)],
 '本地连接* 3': [snicaddr(family=<AddressFamily.AF_LINK: -1>, address='08-D4-0C-40-C3-57', netmask=None, broadcast=None, ptp=None),
  snicaddr(family=<AddressFamily.AF_INET: 2>, address='169.254.163.245', netmask='255.255.0.0', broadcast=None, ptp=None),
  snicaddr(family=<AddressFamily.AF_INET6: 23>, address='fe80::d16d:3604:8b75:a3f5', netmask=None, broadcast=None, ptp=None)],
 '本地连接* 5': [snicaddr(family=<AddressFamily.AF_LINK: -1>, address='0A-D4-0C-40-C3-56', netmask=None, broadcast=None, ptp=None),
  snicaddr(family=<AddressFamily.AF_INET: 2>, address='169.254.130.96', netmask='255.255.0.0', broadcast=None, ptp=None),
  snicaddr(family=<AddressFamily.AF_INET6: 23>, address='fe80::c9ad:1742:ec84:8260', netmask=None, broadcast=None, ptp=None)],
 'VMware Network Adapter VMnet1': [snicaddr(family=<AddressFamily.AF_LINK: -1>, address='00-50-56-C0-00-01', netmask=None, broadcast=None, ptp=None),
  snicaddr(family=<AddressFamily.AF_INET: 2>, address='169.254.189.71', netmask='255.255.0.0', broadcast=None, ptp=None),
  snicaddr(family=<AddressFamily.AF_INET6: 23>, address='fe80::4d68:1bd9:83f3:bd47', netmask=None, broadcast=None, ptp=None)],
 'VMware Network Adapter VMnet8': [snicaddr(family=<AddressFamily.AF_LINK: -1>, address='00-50-56-C0-00-08', netmask=None, broadcast=None, ptp=None),
  snicaddr(family=<AddressFamily.AF_INET: 2>, address='10.0.0.1', netmask='255.255.255.0', broadcast=None, ptp=None),
  snicaddr(family=<AddressFamily.AF_INET6: 23>, address='fe80::31a9:a276:a6ab:c4d1', netmask=None, broadcast=None, ptp=None)],
 '以太网 2': [snicaddr(family=<AddressFamily.AF_LINK: -1>, address='00-FF-D3-C0-D1-56', netmask=None, broadcast=None, ptp=None),
  snicaddr(family=<AddressFamily.AF_INET: 2>, address='169.254.110.136', netmask='255.255.0.0', broadcast=None, ptp=None),
  snicaddr(family=<AddressFamily.AF_INET: 2>, address='192.168.137.1', netmask='255.255.255.0', broadcast=None, ptp=None),
  snicaddr(family=<AddressFamily.AF_INET6: 23>, address='fe80::e540:e9f9:4a4b:6e88', netmask=None, broadcast=None, ptp=None)],
 'WLAN': [snicaddr(family=<AddressFamily.AF_LINK: -1>, address='08-D4-0C-40-C3-56', netmask=None, broadcast=None, ptp=None),
  snicaddr(family=<AddressFamily.AF_INET: 2>, address='192.168.1.102', netmask='255.255.255.0', broadcast=None, ptp=None),
  snicaddr(family=<AddressFamily.AF_INET6: 23>, address='fe80::10d4:4318:dfb8:9360', netmask=None, broadcast=None, ptp=None)],
 'Loopback Pseudo-Interface 1': [snicaddr(family=<AddressFamily.AF_INET: 2>, address='127.0.0.1', netmask='255.0.0.0', broadcast=None, ptp=None),
  snicaddr(family=<AddressFamily.AF_INET6: 23>, address='::1', netmask=None, broadcast=None, ptp=None)]}