2015-03-07 4 views
0

У меня возникают проблемы с каким-то, казалось бы, простым кодом, который в основном запускает поток для чтения последовательного устройства, а затем в основном потоке записывает некоторые данные на устройство. Предполагаемый механизм отключения - это прерывание клавиатуры, но, похоже, оно не выглядит так, как я ожидаю.Python Multithreading - где происходит прерывание клавиатуры

readData = True 
dev = serial.Serial('/dev/ttyX', 115200) 
readThread = threading.Thread(target=read_loop, args=()) 
readThread.start() 
send_loop() 

def read_loop(): 
    while readData: 
     try: 
      print dev.read(2) 
     except Exception, e: 
      print 'Continue' 
    dev.close() 

def send_loop(): 
    global readData 
    for i in xrange(5): 
     try: 
      dev.write('a') 
      time.sleep(1) 
     except Exception,e: 
      break 
    readData = False 
    readThread.join() 
+0

Что означает «не кажется пойманным, как я ожидаю», и что вы на самом деле хотите? Я предсказываю, что вы не учли тот факт, что 'dev.read' - это операция блокировки с вашей конфигурацией. – Hurkyl

ответ

0

Прерывание клавиатуры, или любой другой внешний сигнал, всегда идет только в главном потоке - не к суб-потоков. Если вы хотите, чтобы все остановилось, когда основная нить завершалась, создайте подтемы демонов, чтобы они не сохранили весь процесс самостоятельно!