-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsysInfoCollector.py
executable file
·77 lines (61 loc) · 2.3 KB
/
sysInfoCollector.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Copyright (C)2018 NavInfo Co.,Ltd. All right reserved.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
import time
import psutil
from threading import Timer
class SystemInfoCollector:
def __init__(self, interval):
assert(interval > 0)
self.__interval = interval
self.__cpu_info = {}
self.__reset()
def __parseCpuInfo(self):
p = os.popen("lscpu")
for line in p.readlines():
line = line.strip()
infos = line.split(':')
if len(infos) == 0:
infos = line.split(':')
if len(infos) == 2:
key = infos[0]
value = infos[1].strip()
self.__cpu_info[key] = value
def __reset(self):
self.__core_num = psutil.cpu_count(logical=True)
self.__lastAllCpuPercent = []
self.__parseCpuInfo()
psutil.cpu_percent(percpu=True)
def getCpuPercent(self):
return sum(self.__lastAllCpuPercent) / self.__core_num
def getAllCpuPercent(self):
return self.__lastAllCpuPercent
def getCpuInfo(self):
return self.__cpu_info
def loop(self, duration = 0):
self.__running = True
count = 0
while(self.__running):
self.__lastAllCpuPercent = psutil.cpu_percent(percpu=True)
time.sleep(self.__interval)
count += self.__interval
if (duration > 0 and count * self.__interval >= duration):
self.__running = False
def stop(self):
self.__running = False
g_sysInfoCollector = SystemInfoCollector(1)
if __name__ == '__main__':
g_sysInfoCollector.loop(3)
print(g_sysInfoCollector.getCpuPercent())
print(g_sysInfoCollector.getAllCpuPercent())
print(g_sysInfoCollector.getCpuInfo())