Я где-то читал, что исключение KeyboardInterrupt
вызывается только в основном потоке Python. Я также читал, что основной поток заблокирован, пока выполняется дочерний поток. Итак, означает ли это, что CTRL + C никогда не сможет достичь дочернего потока. Я пробовал следующий код:
def main():
try:
thread = threading.Thread(target=f)
thread.start() # thread is totally blocking (e.g., while True)
thread.join()
except KeyboardInterrupt:
print "Ctrl+C pressed..."
sys.exit(1)
def f():
while True:
pass # do the actual work
В этом случае CTRL + C не влияет на выполнение. Как будто он не может слушать сигнал. Я неправильно это понимаю? Есть ли другой способ убить поток с помощью CTRL + C ?