# This is a sample Python script.
import psutil
import platform
import math
# Press Shift+F10 to execute it or replace it with your code.
# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings.
def bytesHuman(data):
if data == 0:
return 0
elif data <= 1024:
return str(data) + "Bytes"
elif data <= 1048576:
return str(math.ceil(data / 1024)) + "KB"
elif data < 1073741824:
return str(round((data / 1024 / 1024), 2)) + "MB"
else:
return str(math.ceil(data / 1024 / 1024 / 1024)) + "GB"
def monitor(name):
print(name)
print("CPU信息:")
print("CPU物理核心数量:", psutil.cpu_count(False))
print("CPU逻辑核心数量:", psutil.cpu_count())
print()
print("内存信息:")
print("内存总量:", bytesHuman(psutil.virtual_memory().total))
print("内存使用量:", bytesHuman(psutil.virtual_memory().used))
if platform.system() == "Linux":
print("内存缓冲量:", bytesHuman(psutil.virtual_memory().buffers))
print("内存缓存使用量:", bytesHuman(psutil.virtual_memory().cached))
print("内存空闲总量:", bytesHuman(psutil.virtual_memory().free))
print("交换分区总量:", bytesHuman(psutil.swap_memory().total))
print("交换分区使用量:", bytesHuman(psutil.swap_memory().used))
print("交换分区空闲量:", bytesHuman(psutil.swap_memory().free))
print()
print("磁盘情况:")
for part in psutil.disk_partitions():
print("\t盘符:", part.device)
print("\t挂载点:", part.mountpoint)
print("\t文件系统类型:", part.fstype)
print("\t权限:", part.opts)
print("\t最大目录数量:", part.maxfile)
print("\t最大目录层级:", part.maxpath)
print()
disks = psutil.disk_io_counters(True)
for disk in disks:
print("磁盘:", disk)
print("磁盘读io数:", disks[disk].read_count)
print("磁盘写io数:", disks[disk].write_count)
print("磁盘读字节数:", bytesHuman(disks[disk].read_bytes))
print("磁盘写字节数:", bytesHuman(disks[disk].write_bytes))
print()
# 网络协议
net_id = {}
for net in psutil.net_connections():
net_id[net.pid] = net
print("当前系统进程:")
for proc in psutil.process_iter():
try:
port = net_id[proc.pid].laddr.port
print("进程ID:%d,父进程ID:%d,进程:%s,网络端口:%s" % (proc.pid, proc.ppid(), proc.name(), port))
except psutil.NoSuchProcess:
pass
except KeyError:
print("进程ID:%d,父进程ID:%d,进程:%s" % (proc.pid, proc.ppid(), proc.name()))
if __name__ == '__main__':
monitor("this is simple system monitor program\n")