Отправить сигнал из потока в основной скрипт для возврата ситуационного события - PullRequest
0 голосов
/ 15 февраля 2019

Я ученик Девелопер, моя компания попросила меня разработать небольшой «плагин» для обучения.

Я создаю процесс, который каждые 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 (Английский не мой основной язык извините: /)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...