Я ученик Девелопер, моя компания попросила меня разработать небольшой «плагин» для обучения.
Я создаю процесс, который каждые 5 секунд проверяет, включено или нет ведомое устройство.
В моем основном сценарии я хочу, чтобы он показывал зеленую картинку, если ведомый включен, и красный, если отключен.
Я не знаю, какой сигнал должен отправлять мой обработчик процессов и как его получить.Я использую PyQt5 для пользовательского интерфейса.
Проверка процесса выглядит следующим образом:
import time, traceback
import psutil
import threading
from PyQt5.QtCore import QObject, pyqtSignal
def every(delay, task):
next_time = time.time() + delay
while True:
time.sleep(max(0, next_time - time.time()))
try:
task()
except Exception:
traceback.print_exc()
# in production code you might want to have this instead of course:
# logger.exception("Problem while executing repetitive task.")
# skip tasks if we are behind schedule:
next_time += (time.time() - next_time) // delay * delay + delay
def checkIfProcessRunning(processName='deadlineslave', QObject):
'''
Check if there is any running process that contains the given name processName.
'''
# Iterate over the all the running process
slaveActif = False
for proc in psutil.process_iter():
# Check if process name contains the given name string.
if processName.lower() in proc.name().lower():
slaveActif = True
break
if slaveActif:
print("yes")
else:
print("no")
threading.Thread(target=lambda: every(5, checkIfProcessRunning)).start()
На данный момент он возвращает мне yes, если slave включен.
Спасибо Pixidream (Английский не мой основной язык извините: /)