Tôi đang chạy mã này của tôi rất đơn giản:luồng lờ KeyboardInterrupt ngoại lệ
import threading, time
class reqthread (threading.Thread):
def __init__ (self):
threading.Thread.__init__(self)
def run (self):
for i in range(0,10):
time.sleep(1)
print '.'
try:
thread=reqthread()
thread.start()
except (KeyboardInterrupt, SystemExit):
print '\n! Received keyboard interrupt, quitting threads.\n'
Nhưng khi tôi chạy nó, nó in
$ python prova.py
`
.
.
^C.
.
.
.
.
.
.
.
Exception KeyboardInterrupt in <module 'threading' from '/usr/lib/python2.6/threading.pyc'> ignored
`
Trong thực tế python chủ đề phớt lờ tôi Ctrl +C ngắt bàn phím và không in Received Keyboard Interrupt
. Tại sao? Có gì sai với mã này?
Tôi tin rằng một thời gian chờ trên 'tham gia', tức là' trong khi thread.isAlive: thread.join (5) 'cũng sẽ hoạt động để duy trì luồng chính đáp ứng các ngoại lệ. –
'thread.daemon = True' thực sự không được khuyến nghị vì nó không cho phép xóa sạch bất kỳ tài nguyên nào ... –