Прерывание raw_input из другого потока - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть два потока:

printlock = threading.Lock()

# Main thread:
while True:
   if not(printlock.locked()):
      stdin_input = raw_input()
      do_something(stdin_input)

# Listening thread:
while True:
   socket_input = listen_to_socket()
   with printlock:
      print socket_input

Теперь поведение таково, что когда прослушивающий поток получает ввод, он печатает материал, который перезаписывает raw_input ().Содержимое raw_input все еще там, но оно скрыто за другим выводом.Чего я хотел бы достичь, так это того, что когда прослушивающий поток получает входные данные, он прерывает блокировку / ожидание основного потока, чтобы завершить raw_input, так что он просто возобновляется в верхней части цикла while.

  • Это нормально, если я потеряю текущее содержимое raw_input ().
  • Решение должно работать только в Linux.
  • Я хочу использовать вместо него raw_inputпрямого чтения из stdin, потому что я использую модуль readlines.

Есть несколько связанных с SO вопросов, но ни один из них не решает мою проблему - они не обеспечивают способ прерывания raw_input.Я думаю, что это должно быть возможно с помощью сигналов или исключений, но я еще не выяснил, как.

Спасибо за любые предложения.

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