Я использую 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
Как добиться правильного использования ЦП, как в диспетчере задач, используя Python? ⇐ Python
Программы на Python
1731082022
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()
Подробнее здесь: [url]https://stackoverflow.com/questions/79170787/how-to-get-correct-cpu-usage-like-in-task-manager-using-python[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия