Вы должны синхронизировать свой вход с выходом потока, предотвращая их одновременное выполнение.
Вы можете изменить основной цикл, например:
lock = threading.lock()
while 1:
raw_input() # Waiting for you to press Enter
with lock:
r = raw_input('--> ')
# send your command to the thread
И затем заблокировать фонпечать нити:
def worker(lock, ...):
[...]
with lock:
print('what the thread write')
Короче, когда вы Press Enter
остановите нить и войдете в «режим ввода».
Точнее, каждыйкогда вы Press Enter
будете:
- ждать, пока блокировка не станет доступной
- получить блокировку
- print
-->
и ждать команды - вставить вашу команду
- отправить эту команду в поток
- снять блокировку
Таким образом, ваш поток будет остановлен, только если он попытаетсядля печати, когда вы находитесь в «режиме ввода» ,
и в вашем терминале вы получите что-то вроде:
some previous output
---> your input
THE THREAD OUTPUT