Я где-то читал, что исключение 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?