Я пишу оболочку UI для чтения некоторой информации с помощью esptool.py
У меня есть два активных потока: UI и обработка - SerialReader. Класс UI имеет ссылку на SerialReader и должен останавливать SerialReader, когда получает команду выхода.
Проблема в том, что я вызываю команду esptool, которая застревает при попытке прочитать данные через последовательное соединение.
class SerialReaderProcess(threading.Thread):
def __init__(self, window):
super().__init__()
self.window = window
self.logger = window.logger
self.window.set_thread(self)
self._stop_event = threading.Event()
def run(self):
...
#read chip id
esptool.main(['chip_id'])
...
def stop(self):
self._stop_event.set()
def stopped(self):
return self._stop_event.is_set()
Я хочу убить все активные процессы этой программы. Когда я вызываю закрытие пользовательского интерфейса и вызываю serialReaderProcess.stop()
, процесс не останавливается. Я вижу вывод esptool на консоли.
Меня не волнует, если я что-нибудь прерву, никакие данные не могут быть повреждены.
Я пробовал sys.exit(0)
безрезультатно. Я изучил проблему, но не смог найти решения.
ОС - Ubuntu, и меня не интересуют кроссплатформенные функции, но они были бы хороши