zax2002
@zax2002

Как отменить ввод через input() из потока?

Как сделать, чтобы скрипт завершился по окончании цикла?
from threading import Thread
from time import sleep

def cycle():
	for x in range(10):
		print(x)
		sleep(1)
	print("Stopping...")
	
	#it doesn't return to shell
	exit()
	
Thread(target=cycle).start()

while True:
	msg = input("> ")
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ответы на вопрос 2
total4c
@total4c
Ничего не умею
Возможно вам немножко нужно изменить код. Предоставлю мой пример:

from threading import Thread
from time import sleep

def cycle():
  for x in range(10):
    print(x)
    sleep(1)
  print("Stopping...")
  
  #it doesn't return to shell
  exit()
  
thread1 = Thread(target=cycle).start()
thread1.join() # Метод join() останавливает поток после его окончания

while thread1.is_alive(): # Пока поток работает, продолжаем цикл (Возвращает True/False)
  msg = input("> ")
Ответ написан
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Прервать input к сожалению невозможно. Можете попробовать ожидать ввод с таймаутом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы