Ctrl-C即KeyboardInterrupt在Python中杀死线程
作者:互联网
我在某处读到只在Python的主线程中引发KeyboardInterrupt异常.我还读到在子线程执行时主线程被阻塞.那么,这是否意味着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杀死线程?
解决方法:
问题是您正在使用thread1.join(),这将导致您的程序等待该线程完成继续.
信号将始终被主进程捕获,因为它是接收信号的信号,它是具有线程的进程.
如你所示,你基本上运行一个没有线程功能的“普通”应用程序,因为你启动1个线程并等到它完成继续.
标签:python,multithreading,kill,keyboardinterrupt 来源: https://codeday.me/bug/20190930/1835763.html