[Python Study Notes]CS架构远程访问获取信息--SERVER端v2.0
更新内容:
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, os
from socket import *
import psutil
from 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 IPv4
server=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()
[Python Study Notes]CS架构远程访问获取信息--SERVER端v2.0的更多相关文章
- [Python Study Notes]CS架构远程访问获取信息--Client端v2.0
更新内容: 1.增加内存信息获取 2.增加电池信息获取 3.增加磁盘信息获取 4.重新布局窗体 5.增加窗体名称 6.增加连接成功之前,不可按压 效果图: '''''''''''''''''''''' ...
- [Python Study Notes]CS架构远程访问获取信息--Client端v1.0
更新内容: 1.添加entry栏默认ip和port口 2.修正退出功能 3.添加退出自动关闭窗口功能 4.优化cpu显示为固定保留两位小数 '''''''''''''''''''''''''''''' ...
- [Python Study Notes]CS架构远程访问获取信息--SERVER端
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
- [Python Study Notes]CS架构远程访问获取信息--Client端
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
- Eureka系列(四) 获取服务Server端具体实现
获取服务 Server端流程 我们先看下面这张图片,这张图片简单描述了下我们EurekaClient在调用EurekaServer 提供的获取服务Http接口,Server端实现接口执行的大致流程 ...
- [Python Study Notes]进程信息(丁丁软件监控进程,http-post)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
- [Python Study Notes]cpu信息
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
- [Python Study Notes]电池信息
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
- [Python Study Notes]内存信息
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
随机推荐
- Linux环境JDK安装
Java的编程离不开jdk,今天本文主要讲下Linux下的JDK安装与配置 1.卸载Linux自带的JDK #检测jdk安装包 [root@localhost ~]# rpm -qa | grep j ...
- PHP中的GetType和SetType
大部分的可变函数都是用来测试一个函数的类型的.PHP中有两个最常见的函数,分别是gettype()和settype().这两个函数具有如下所示的函数原型,通过他们可以获得要传递的参数和返回的结果. s ...
- 云主机与vps虚拟主机的区别
云计算时代,云主机其可扩展性.价格便宜.安全可靠的特性深受企业和开发者欢迎,但目前有些IDC企业,新瓶装旧酒,将虚拟主机.VPS进行包装推出所谓的云主机服务,为了帮助用户更好的辨别和挑选云主机,下文详 ...
- dede文章插入分页符不起作用,编辑器中出现分页符,导致文章显示不全
文章来源:小灰博客| 时间:2013-10-30 13:40:21| 作者:Leo | 1 条评论 文章分类:IT技术分享.PHP 标签: dedecms 今天偶尔发现给一篇dede下的长文章 ...
- DEDECMS中的几个常见的自定义常量DEDEMEMBER等位置
http://www.dede58.com/a/dedejq/3567.html dedecms新建栏目时默认都是允许投稿的,可以投稿本来对网站来说是件好事,但是dedecms是开源的,使用太广泛了, ...
- [SinGuLaRiTy] NOIP模拟题 by liu_runda
[SinGuLaRiTy-1046] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 题目名称 兔子 被子 蚊子 源程序文件名 rabbit. ...
- 用IDEA/WebStrom 提交本地项目到Git/码云等
以码云为例: 在码云上创建新的项目. webstrom/idea 打开本地项目
- [知了堂学习笔记]_集合接口list与集合接口set的区别
在Java中 除了 Map以外的集合的根接口都是Collection接口,而在Collection接口的子接口中,最重要的莫过于List和Set集合接口. 今天我们就来谈谈List集合接口与Set集合 ...
- rsync学习笔记
转载地址:http://www.cnblogs.com/maxincai/p/5142245.html rsync同步工具 1.rsync介绍 rsync是一款开源的.快速的.多功能的.可实现全量及增 ...
- iOS 的ipa 包重新签名
https://www.evernote.com/l/As7sxCnA85JCs7bn5Tg5St003gXYYslAk3k