-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSINFO.py
131 lines (104 loc) · 4.47 KB
/
SINFO.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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
import psutil
import platform
import cpuinfo
import wmi
import os
class SINFO:
def __init__(self):
# names
self.__uname = platform.uname()
# processor info
self.__physicalCores = psutil.cpu_count(logical=False)
self.__totalCores = psutil.cpu_count(logical=True)
self.__cure = psutil.cpu_freq()
self.__cpuPercent = psutil.cpu_percent()
# disk info
self.__partitions = psutil.disk_partitions()
self.__disk_io = psutil.disk_io_counters()
# memory info
self.__svmem = psutil.virtual_memory()
# gpu info
self.__gpus = wmi.WMI().Win32_VideoController()[0]
# board info
self.__board = wmi.WMI().Win32_BaseBoard()[0]
# usb info
self.__usb = wmi.WMI().Win32_USBHub()
@property
def get_info(self):
return [self.get_processor_info,
self.get_disk_info,
self.get_memory_info,
self.get_gpu_info,
self.get_board_info,
self.get_usb_info
]
@property
def get_processor_info(self):
processor = ['Процессор', cpuinfo.get_cpu_info()['brand_raw'], {
'Физическия ядра:': self.__physicalCores,
'Общее кол-во ядер:': self.__totalCores,
'Макс. частота (МГц):': self.__cure.max,
'Мин. частота (МГц):': self.__cure.min,
'Текущая частота (МГц):': self.__cure.current,
'Нагруженость процессора (%):': self.__cpuPercent}
]
return processor
@property
def get_disk_info(self):
disk = ['Диск']
for partition in self.__partitions:
disk.append(partition.device)
partition_usage = psutil.disk_usage(partition.mountpoint)
disk.append({
'Всего памяти:': SINFO.bytesToGb(partition_usage.total),
'Использовано:': SINFO.bytesToGb(partition_usage.used),
'Свободно:': SINFO.bytesToGb(partition_usage.free),
'Испрользовано в %:': partition_usage.percent,
'Считано:': SINFO.bytesToGb(self.__disk_io.read_bytes),
'Записано:': SINFO.bytesToGb(self.__disk_io.write_bytes),
})
return disk
@property
def get_memory_info(self):
memory = ['Память', os.popen('wmic memorychip get Manufacturer').read(), {
'Всего (ГБ):': SINFO.bytesToGb(self.__svmem.total),
'Доступно (ГБ):': SINFO.bytesToGb(self.__svmem.available),
'Используется (ГБ):': SINFO.bytesToGb(self.__svmem.used),
'Используется в (%):': SINFO.bytesToGb(self.__svmem.percent),
'Частота в (МГц):': os.popen('wmic memorychip get Speed').read(),
'Слоты: ': os.popen('wmic memorychip get DeviceLocator').read(),
'Форм. фактор:': os.popen('wmic memorychip get formfactor').read(),
}]
return memory
@property
def get_gpu_info(self):
gpu = ['Видеокарта', self.__gpus.Name, {
'Видео процессор: ': self.__gpus.VideoProcessor,
'Объем видео ОЗУ (ГБ): ': self.__gpus.VideoMemoryType,
'Макс частота обновления(МГц): ': self.__gpus.MaxRefreshRate,
'Мин частота обновления(МГц): ': self.__gpus.MinRefreshRate,
' ': self.__gpus.VideoModeDescription,
}]
return gpu
@property
def get_board_info(self):
board = ['Системная плата', self.__board.Manufacturer, {
'Чипсет:': self.__board.Product,
'Назначение:': self.__board.Caption,
'Серийный номер:': self.__board.SerialNumber
}]
return board
@property
def get_usb_info(self):
usb = ['USB устройство']
for usb_device in self.__usb:
usb.append({
'Name: ': usb_device.Name,
'DeviceID: ': usb_device.DeviceID,
'PNPDeviceID: ': usb_device.PNPDeviceID,
'Description: ': usb_device.Description,
})
return usb
@staticmethod
def bytesToGb(value):
return value // (1024. ** 3)