Я довольно новичок в Python и у меня есть вопрос о многопоточности.
У меня есть одна функция, которая вызывается довольно часто. Эта функция запускает другую функцию в новом потоке.
def calledOften(id):
t = threading.Thread(target=doit, args=(id))
t.start()
def doit(arg):
while true:
#Long running function that is using arg
При вызове callOften каждый раз, когда создается новый поток. Моя цель - всегда завершать последний запущенный поток -> Всегда должен быть только один запущенный doit()
Функция.
Что я пытался: Как остановить цикл в Python ?
def calledOften(id):
t = threading.Thread(target=doit, args=(id,))
t.start()
time.sleep(5)
t.do_run = False
Этот код (с измененной функцией doit) работал для меня, чтобы остановить поток через 5 секунд. но я не могу вызвать t.do_run = False
, прежде чем я начну новый поток ... Это довольно очевидно, потому что он не определен ...
Кто-нибудь знает, как остановить последний запущенный поток и начать новый?
Спасибо;)