Tôi có một mã python rất đơn giản:Tại sao giám sát một ngắt bàn phím trong chủ đề trăn không hoạt động
def monitor_keyboard_interrupt():
is_done = False
while True:
if is_done
break
try:
print(sys._getframe().f_code.co_name)
except KeyboardInterrupt:
is_done = True
def test():
monitor_keyboard_thread = threading.Thread(target = monitor_keyboard_interrupt)
monitor_keyboard_thread.start()
monitor_keyboard_thread.join()
def main():
test()
if '__main__' == __name__:
main()
Tuy nhiên khi tôi bấm 'Ctrl-C' thread không dừng lại. Ai đó có thể giải thích những gì tôi đang làm sai. Bất kỳ trợ giúp được đánh giá cao.
Thử di chuyển vòng lặp while trong khối thử. – piedar
@piedar Nó không hoạt động. – flashburn
Vì luồng không thể nghe tín hiệu; chỉ có chủ đề chính mới có thể. –