Я использую программу python, которая позволяет использовать и создавать расширения. Когда я вызываю мое расширение, код будет выполняться до его завершения, после чего расширение закроется и вернется к основной программе. Но у меня есть несколько расширений, которые должны делать еще кое-что в фоновом режиме, поэтому я запускаю поток.
Я знаю, как остановить потоки, но не после того, как мои расширения закрыты.
Решение, которое я нашел, состоит в том, чтобы записать флаги в файл и загрузить их, когда я передаю логическое значение из основной программы с помощью kwargs.
class TestThread():
def __init__(self, **kwargs):
super(TestThread, self).__init__(**kwargs)
start_thread = kwargs.get("start_thread", False)
do_something_else = kwargs.get("do_something_else", False)
stop_thread = kwargs.get("stop_thread", False)
if stop_thread:
self.write_state("stop")
while self.load_state() != "stopped": # wait until it is stopped
time.sleep(0.1)
if start_thread:
self.write_state("run")
Thread(target=self.myThread).start()
if do_something_else:
# Doing something else
def myThread(self):
while self.load_state() == "run":
# do_some_stuff
self.write_state("stopped")
def loadState(self):
return pickle.load(open("state.p", "rb"))
def writeState(self, state):
pickle.dump(state, open("state.p", "wb"))
return True
Единственное другое решение, которое у меня было Имеется в виду использование сокета и отправка состояния потоку. Но я думаю, что должен быть более pythoni c способ выполнить sh this.
Спасибо.