После долгой работы в SO, я до сих пор не нашел хорошего ответа на то, что я надеюсь, это довольно распространенная потребность. В основном мне нужен основной поток, чтобы делать «материал» до тех пор, пока он не получит вход, а затем подействует на этот вход, а затем вернется к исходному «материалу». Моя проблема каждый раз кажется, что мое выполнение программы, кажется, полностью останавливается на исходном входе, я называю это в потоке или в другом месте. Предупреждение Я довольно новичок в python, но я надеюсь, что это не должно быть слишком противным для реализации. Вот то, с чем я играю (вытащил из моего другого вопроса, на который был ответен мой вопрос с резьбой)Non-Blocking raw_input() в python
Итак, я пытаюсь написать программу, которая ищет нажатия клавиш, а затем делает что-то в основной программе на основе что пользователь вводит. Я пытаюсь запустить прослушивание клавиатуры в потоке, а затем сравнить что-то в переменной в моем основном цикле, но я никогда не собираюсь вводить ввод с клавиатуры. В приведенном ниже коде строка печати может быть обновлена никогда не будет, а только блок else из основного цикла while. Что мне нужно сделать, чтобы мой основной цикл знал о нажатиях клавиш, нажатых пользователем?
import threading
import time
kbdInput = ''
playingID = ''
def kbdListener():
global kbdInput
kbdInput = rawInput()
print "maybe updating...the kbdInput variable is: ",kbdInput
listener = threading.Thread(target=kbdListener)
while True:
print "kbdInput: ",kbdInput
print "playingID: ",playingID
if playingID != kbdInput:
print "Recieved new keyboard Input. Setting playing ID to keyboard input value"
playingID = kbdInput
else:
print "No input from keyboard detected. Sleeping 2 seconds"
time.sleep(2)