【发布时间】:2021-05-18 02:44:28
【问题描述】:
我有一个场景,我想处理 SIGINT int python 来清理一些东西然后退出。 我正在使用以下代码。
import threading
import signal
def shutdown_handler(*args):
raise SystemExit('Exiting')
signal.signal(signal.SIGINT, shutdown_handler)
def main():
while 1:
time.sleep(2)
print("***")
sub_thread = threading.Thread(target=main)
sub_thread.start()
sub_thread.join()
但它需要我在程序退出之前多次按 CTRL + c。 以下工作正常
import time
import threading
import signal
def shutdown_handler(*args):
# Do some clean up here.
raise SystemExit('Exiting')
signal.signal(signal.SIGINT, shutdown_handler)
def main():
while 1:
time.sleep(2)
print("***")
main()
我正在使用第一个代码,因为this 线程上的建议
你能告诉我为什么这种行为。是因为运行了多个线程,我该如何解决这个问题?
谢谢
【问题讨论】:
-
看看另一种处理 CTRL+C 的方法:stackoverflow.com/a/46346184/1012381。您正在运行哪些操作系统和 python 版本?
-
我在 Ubuntu 18.04.5 LTS 上运行 Python 3.6.9
-
看看这个链接,看来你需要捕获一个
KeyboardInterrupt异常:stackoverflow.com/a/2564161
标签: python python-multithreading