def data(cls): # 如果这些变量可以放到类方法里尽量放到类方法里 不然每次文件被导入或者被继承 类变量都会执行一遍 cpumax = cpumin = CpuOperat.cpu_rate(waittime=1) cpu_writerow = 3 cpucount = 0 cpucountnum = 1 while True: try: cpu = cls.cpu_rate(waittime=1) if cpu > cpumax: cpumax = cpu if cpu < cpumin: cpumin = cpu cpucount += cpu # cpulist.append(cpu) cpuaverg = cpucount / cpucountnum cls.log.info('当前CPU使用率 = %f' % cpu) cls.log.info('当前CPU使用率平均值 = %s' % cpuaverg) cls.log.info('当前CPU最大使用值 = %f' % cpumax) cls.log.info('当前CPU最小使用值 = %f' % cpumin) currenttime = SystemInfo.systime() currentactivity = SystemInfo.currentactivity() sys_cure = SystemInfo.cpuinfo()['cpucure'] cpudata = [currenttime, currentactivity, cpu, sys_cure] ExcleDataSave.write_cpudata(row=cpu_writerow, cpudata=cpudata) cpucountnum += 1 cpu_writerow += 1 except Exception as err: if err is KeyboardInterrupt: cls.log.error("手动暂停") else: cls.log.error("CPU 数据抓取出错 重新运行")
def memdata_write(row=3): process_memory = (int(MemoryInfo.get_processmem()[0]) // 2014) sys_memory = MemoryInfo.get_sysmem()[0] currenttime = time.strftime('%H%:%M:%S', time.localtime(time.time())) currentactivity = SystemInfo.currentactivity() memdata = [currenttime, currentactivity, process_memory, sys_memory] ExcleDataSave.write_memdata(row=row, memdata=memdata) return process_memory
def monitor(cls): row = 3 while True: try: framesdata = FramesTime.timecount() ExcleDataSave.write_fpsdata(row=row, framesdata=framesdata) time.sleep(3) row += 1 except Exception as err: if err is KeyboardInterrupt: cls.log.info('手动暂停') else: cls.log.error("帧率测试运行出错 重新开始运行")
def run(self, waittime=2): self.log.info("开始线程:%s" % self.name) fps_writerow = 3 while self.stopflag: try: framesdata = FramesTime.timecount() ExcleDataSave.write_fpsdata(row=fps_writerow, framesdata=framesdata) fps_writerow += 1 time.sleep(waittime) except Exception as err: if err is KeyboardInterrupt: self.log.info('手动暂停') else: self.log.error("帧率测试运行出错 重新开始运行") self.log.info("结束线程:%s" % self.name)
def datawrite(cls, writeexcle_row=3, waittime=2): old_txnetdata = PackNetData.dataread()[0] old_rxnetdata = PackNetData.dataread()[1] time.sleep(waittime) currenttime = time.strftime('%H%:%M:%S', time.localtime(time.time())) new_txnetdata = PackNetData.dataread()[0] new_rxnetdata = PackNetData.dataread()[1] # tx_sec_data 上行数据 rx_sec_data 下行数据 tx_sec_data = '{:.2f}'.format((new_txnetdata - old_txnetdata) / 1024) cls.log.info("平均上行流量: %skb" % tx_sec_data) rx_sec_data = '{:.2f}'.format((new_rxnetdata - old_rxnetdata) / 1024) cls.log.info("平均下行流量: %skb" % rx_sec_data) txnetdata = [currenttime, new_txnetdata, tx_sec_data] rxnetdata = [currenttime, new_rxnetdata, rx_sec_data] ExcleDataSave.write_netdata(row=writeexcle_row, txnetdata=txnetdata, rxnetdata=rxnetdata)
def battery_writedata(cls, row, waittime=10): battery_detaildata = BatteryStats.batterystatsdata() current_power = battery_detaildata['totalbattery'] time.sleep(waittime) battery_sysdata = BatteryStats.batterydata() temperature = int(battery_sysdata[1]) // 10 currenttime = SystemInfo.systime() currentactivity = SystemInfo.currentactivity() batterycapacity = battery_detaildata['batterycapacity'] new_power = battery_detaildata['totalbattery'] power_persecond = new_power - current_power batterydata = [ currenttime, batterycapacity, currentactivity, temperature, new_power, power_persecond ] ExcleDataSave.write_batterydata(row=row, batterydata=batterydata)
def run(self, waittime=1): """ :param waittime: cpu_rate 数据抓取时长间隔 :return: """ self.log.info("开始线程:%s" % self.name) cpu_writerow = 3 while self.stopflag: try: cpu = CpuOperat.cpu_rate(waittime=waittime) currenttime = SystemInfo.systime() currentactivity = SystemInfo.currentactivity() sys_cure = SystemInfo.cpuinfo()['cpucure'] cpudata = [currenttime, currentactivity, cpu, sys_cure] self.log.info('当前CPU使用率 = %f' % cpu) ExcleDataSave.write_cpudata(row=cpu_writerow, cpudata=cpudata) cpu_writerow += 1 except Exception as err: if err is KeyboardInterrupt: self.log.error("手动暂停") else: self.log.error("CPU 数据抓取出错 重新运行") self.log.info("退出线程:%s" % self.name)
def run(self): print("开始线程:" + self.name) try: test = PackNetData().datawrite() except IOError: print('excle must be save') print("退出线程:" + self.name) threadcpu = CpuThread(1, "threadcpu") threadfps = FpsThread(2, "threadfps") threadbattery = BatteryThread(3, "threadbattery") threadnet = NetThread(4, "thrednet") threadmem = MemThread(5, 'threadmem') if __name__ == "__main__": ExcleDataSave.createxcle() ExcleDataSave.creat_cputable() ExcleDataSave.creat_memtable() ExcleDataSave.creat_nettable() ExcleDataSave.creat_batterytable() ExcleDataSave.creat_fpstable() time.sleep(2) threadbattery.start() # 电量数据采集时间较长 所以放在最先运行 threadmem.start() # 内存数据同理 放在第二位执行 threadcpu.start() # Cpu 数据采集实时 可以放在任何位置 threadnet.start() threadfps.start()