Ctrl-C, т.е. KeyboardInterrupt для уничтожения потоков в Python

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

22
задан Maggyero 19 February 2019 в 14:07
поделиться