Как добиться правильного использования ЦП, как в диспетчере задач, используя Python?Python

Программы на Python
Ответить
Anonymous
 Как добиться правильного использования ЦП, как в диспетчере задач, используя Python?

Сообщение Anonymous »

Я использую psutil, но получаю значения от 0 до 2%, тогда как диспетчер задач показывает значения намного выше, от 8 до 40% загрузки ЦП. Я что-то упустил?
import sys
import psutil # To get CPU and RAM usage
from PyQt5 import QtWidgets, QtCore, QtGui

class CircularProgressBar(QtWidgets.QWidget):
def __init__(self, label="CPU", color=QtGui.QColor(255, 140, 0), parent=None):
super().__init__(parent)
self.label = label
self.color = color
self.value = 0
self.timer = QtCore.QTimer(self)
self.timer.timeout.connect(self.update_value)
self.timer.start(1000) # Update every second

def update_value(self):
# Make sure the first call was done before to avoid 0.0 initial value
if not hasattr(self, 'initial_call_done'):
psutil.cpu_percent(interval=1) # Establish baseline
self.initial_call_done = True

# Get CPU usage with a non-zero interval
self.value = psutil.cpu_percent(interval=1)
self.update()

def paintEvent(self, event):
width = self.width()
height = self.height()
side = min(width, height)

# Create a QPainter instance
painter = QtGui.QPainter(self)
painter.setRenderHint(QtGui.QPainter.Antialiasing)

# Draw the background circle
rect = QtCore.QRectF(10, 10, side - 20, side - 20)
pen = QtGui.QPen(QtCore.Qt.gray, 10)
painter.setPen(pen)
painter.drawArc(rect, 0, 360 * 16)

# Draw the progress arc
pen.setColor(self.color)
painter.setPen(pen)
angle = int(self.value * 360 / 100) * 16
painter.drawArc(rect, 90 * 16, -angle)

# Draw the label and percentage text
painter.setPen(QtCore.Qt.white)
painter.setFont(QtGui.QFont("Arial", side // 10))
painter.drawText(rect, QtCore.Qt.AlignCenter, f"{self.label}\n{self.value:.0f}%")

painter.end()

def main():
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QMainWindow()
window.setWindowTitle("Resource Monitor")

# Create a central widget and layout
central_widget = QtWidgets.QWidget()
layout = QtWidgets.QHBoxLayout(central_widget)

# Create and add progress bars
cpu_bar = CircularProgressBar("CPU", QtGui.QColor(255, 140, 0))
cpu_bar.setMinimumSize(200, 200)

layout.addWidget(cpu_bar)
window.setCentralWidget(central_widget)

window.resize(600, 400)
window.show()
sys.exit(app.exec_())

if __name__ == "__main__":
main()


Подробнее здесь: https://stackoverflow.com/questions/791 ... ing-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»