[Python Study Notes]CS架構遠程訪問獲取信息--SERVER端v2.0
阿新 • • 發佈:2018-02-17
comm 賦值 type 9.1 ket partition {} python script
更新內容:
1.增加內存信息獲取
2.增加電池信息獲取
3.增加磁盤信息獲取
4.重新布局窗體
5.增加窗體名稱
6.增加連接成功之前,不可按壓
‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘ >>文件: ps_server.py >>作者: liu yang >>郵箱: [email protected] >>博客: 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