Python psutil 获取系统信息和监控使用率
程序员文章站
2024-03-23 12:50:10
...
在Python中获取系统信息的好办法是使用psutil
第三方模块psutil = process and system utilities
安装 psutil
pip3 install psutil
代码
# 导入模块
import psutil # 是一个功能强大的跨平台的系统管理库
import datetime
# cpu的使用率
cup_per = psutil.cpu_percent(interval=0.5) # 0.5刷新频率
# 内存信息
memory_info = psutil.virtual_memory()
# 硬盘信息
disk_info = psutil.disk_usage("/") # 根目录磁盘信息
# 网络信息
net_info = psutil.net_io_counters()
# 获取当前系统时间
current_time = datetime.datetime.now().strftime("%F %T") # %F年月日 %T时分秒
# 拼接显示
log_str = "|---------------------|----------|----------|----------|-----------------------------|\n"
log_str+= "|---------time--------|---cpu----|--memory--|---disk---|-------------net-------------|\n"
log_str+= "| | %dcore | %.2fG | %.2f | |\n" % (psutil.cpu_count(logical=False), memory_info.total/1024/1024/1024, disk_info.total/1024/1024/1024)
log_str+= "| %s | %s%% | %s%% | %s%% | in:%s out:%s |\n" % (current_time, cup_per, memory_info.percent, disk_info.percent, net_info.bytes_recv, net_info.bytes_sent)
print(log_str)
# 保存信息到日志文件
f = open("log.txt", "a") # 新建log.txt
f.write(log_str + "\n\n") # 写入信息
f.close() # 关闭
日志输出
加一个循环 每5秒获取一次
# 导入模块
import psutil # 是一个功能强大的跨平台的系统管理库
import datetime
def monitor(time):
""" 定义函数 实时获取硬件信息 """
# cpu的使用率
cup_per = psutil.cpu_percent(interval=time) # 此时刷新时间是5秒
# 内存信息
memory_info = psutil.virtual_memory()
# 硬盘信息
disk_info = psutil.disk_usage("/") # 根目录磁盘信息
# 网络信息
net_info = psutil.net_io_counters()
# 获取当前系统时间
current_time = datetime.datetime.now().strftime("%F %T") # %F年月日 %T时分秒
# 拼接显示
log_str = "|---------------------|----------|----------|----------|-----------------------------|\n"
log_str += "|---------time--------|---cpu----|--memory--|---disk---|-------------net-------------|\n"
log_str += "| | %dcore | %.2fG | %.2f | |\n" % (
psutil.cpu_count(logical=False), memory_info.total / 1024 / 1024 / 1024, disk_info.total / 1024 / 1024 / 1024)
log_str += "| %s | %s%% | %s%% | %s%% | in:%s out:%s |\n" % (
current_time, cup_per, memory_info.percent, disk_info.percent, net_info.bytes_recv, net_info.bytes_sent)
print(log_str)
# 保存信息到日志文件
f = open("log.txt", "a") # 新建log.txt
f.write(log_str + "\n\n") # 写入信息
f.close() # 关闭
def main():
while True:
monitor(5) # 每隔5秒执行一次
# __name__值 如果这个文件被其他文件导入 此时__name__指的就是当前文件名
# 如果直接运行 此时__name__值是__main__
if __name__ == '__main__':
main() # 当独立运行时才会去调用main
下一篇: 前端知识点、面试题,附答案(下)