【发布时间】:2020-09-22 23:39:35
【问题描述】:
我偶然发现了一段有点奇怪的代码,我期待当程序发出信号时,exit() 应该引发一次SystemExit 并导致程序退出,但是在这种情况下,当主线程在th.join() 上阻塞,需要调用exit() 语句两次才能退出程序。
这不是一个实际练习,但我想知道幕后发生了什么。
import threading
import time
import signal
def task():
while True:
time.sleep(1)
def sig_handler(self, *_):
# raise ValueError()
exit()
def main():
signal.signal(signal.SIGINT, sig_handler)
th = threading.Thread(target=task)
th.start()
th.join()
if __name__ == "__main__":
main()
【问题讨论】:
标签: python python-3.x signals python-multithreading