博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Python Study Notes]CS架构远程访问获取信息--SERVER端v2.0
阅读量:5162 次
发布时间:2019-06-13

本文共 4041 字,大约阅读时间需要 13 分钟。

更新内容:

1.增加内存信息获取

2.增加电池信息获取

3.增加磁盘信息获取

4.重新布局窗体

5.增加窗体名称

6.增加连接成功之前,不可按压

 

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''>>文件: ps_server.py>>作者: liu yang>>邮箱: liuyang0001@outlook.com>>博客: www.cnblogs.com/liu66blog'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''#!/usr/bin/env python# -*- coding: utf-8 -*-import sys, osfrom socket import *import  psutilfrom time import sleep'''得到cpu使用率''''''返回值:(float)cpu使用率'''def get_cpu_percent():    cpu_start_alltime=psutil.cpu_times()    '''print(cpu_start_alltime)得到的内容:scputimes(user=14088.359375, system=20540.59375,                            idle=362071.6875, interrupt=847.9375019073486, dpc=3795.6875)'''    t1all=sum(cpu_start_alltime)#开始的cpu时间总和    sleep(1)#休眠一秒    cpu_end_alltime=psutil.cpu_times()    t2all=sum(cpu_end_alltime)#结束时的cpu时间总和    t1busy=t1all-cpu_start_alltime.idle#开始的忙碌时间=总时间-空闲时间    t2busy=t2all-cpu_end_alltime.idle    '''cpu使用率:(结束的忙碌时间-开始的忙碌时间)/(结束的总时间-开始的总时间)'''    cpu_busy=(t2busy-t1busy)/(t2all-t1all)*100    # print("cpu使用率:%0.2f"%cpu_busy+'%')    return  cpu_busy# 另一种写法# def get_cpu_percent():#     return psutil.cpu_percent(1)'''将bytes数转换成更加直观的符号显示''''''返回值:(str)两位浮点数+B'''def bytes2symbols(bytes_value):    '''单位符号'''    symbols = ('K' ,'M', 'G', 'T', 'P', 'E', 'Z', 'Y')    '''每个单位对应的bytes数的字典,先定义为空'''    prefix={}    '''要得到这样的{K:1024, M:1024*1024,G:1024**3},进行for循环'''    for i,s in enumerate(symbols):        # '''enumerate()为列举函数'''        # '''i:代表下标'''        # '''s:代表改下标对应的值'''        # '''取到符号元组的值,作为prfix字典的key,根据key给value进行赋值'''        prefix[s]=1024**(i+1)    # '''打印得到的对应字典'''    # print(prefix)    symbols_value=0    symbol=''    # '''循环prefix字典,得到转换值'''    for key,value in prefix.items():        if bytes_value >=value :            symbols_value=bytes_value/value            symbol=key        # 如果不满足最小的KB,则以B显示        elif bytes_value <1024:            return  '%0.2fB'%bytes_value        # '''返回转换值(str)'''    return  '%0.2f%sB'%(symbols_value,symbol)'''得到内存信息''''''返回值:(str)内存信息'''def get_memory():    nt=psutil.virtual_memory()    # 得到的数据:svmem(total=8482263040, available=1770676224, percent=79.1, used=6711586816, free=1770676224)    # print(nt)    total=bytes2symbols(nt.total)    available=bytes2symbols(nt.available)    percent=bytes2symbols(nt.percent)    used=bytes2symbols(nt.used)    free=bytes2symbols(nt.free)    return ("总内存:%4s  \n可使用:%4s  \n已使用:%4s"%(total,available,used))'''得到电池信息''''''返回值:(str)电池信息'''def get_battery():    ba=psutil.sensors_battery()    # 未充电:sbattery(percent=13, secsleft=4294967295, power_plugged=False)    # 在充电:sbattery(percent=14, secsleft= < BatteryTime.POWER_TIME_UNLIMITED: -2 >, power_plugged = True)    battery=ba.percent    if ba.power_plugged:        power="正在充电中..."    else:        power="未充电"    return ('电量剩余:%d  电源状态:%2s'%(battery,power))'''磁盘分区信息显示''''''返回值:(str)磁盘信息'''def get_disk():    # 得到磁盘详细信息的列表    disks = psutil.disk_partitions()    # 磁盘信息列表    disk_list = []    disk_str=''    # 循环列表,打印    for disk in disks:        disk_list.append('disk:%2s type:%4s opts:%8s \n' % (disk.device, disk.fstype, disk.opts))        disk_str+='disk:%2s type:%4s opts:%8s \n' % (disk.device, disk.fstype, disk.opts)    # print(disk_str)    return disk_str# 在这里定义一个字典,存储字符和对应函数关系command_dict={'cpu':get_cpu_percent,'memory':get_memory,'battery':get_battery,'disk':get_disk,}# 创建服务端 TCP/IP IPv4server=socket(AF_INET,SOCK_STREAM)server.bind(('localhost',66))server.listen(5)print("等待客户端进行连接...")while True:    # 等待连接阻塞    conn,addr=server.accept()    # 元祖取值需要用方括号!!!    print("%s已连接..."%addr[0])    while True:        data = conn.recv(1024).decode('utf-8')        if data in command_dict.keys():            print(command_dict[data]())            buf=str(command_dict[data]()).encode('utf-8')            print(buf.decode())            conn.send(buf)        if not data:            print("客户按可能已断开连接...")            break    conn.close()conn.close()

转载于:https://www.cnblogs.com/liu66blog/p/8452102.html

你可能感兴趣的文章
Real-Time Rendering 笔记
查看>>
多路复用
查看>>
处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“Manag
查看>>
利用SignalR来同步更新Winfrom
查看>>
反射机制
查看>>
CocoaPod
查看>>
BZOJ 1251: 序列终结者 [splay]
查看>>
5G边缘网络虚拟化的利器:vCPE和SD-WAN
查看>>
MATLAB基础入门笔记
查看>>
【UVA】434-Matty&#39;s Blocks
查看>>
Android开发技术周报 Issue#80
查看>>
hadoop2.2.0+hive-0.10.0完全分布式安装方法
查看>>
django知识点总结
查看>>
C++ STL stack、queue和vector的使用
查看>>
使用Reporting Services时遇到的小问题
查看>>
约瑟夫问题
查看>>
Arduino 报错总结
查看>>
树莓派Android Things物联网开发:树莓派GPIO引脚图
查看>>
矩阵快速幂---BestCoder Round#8 1002
查看>>
如何将应用完美迁移至Android P版本
查看>>