sys.exit()在Python多线程内调用时不会退出
Posted Jason_WangYing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sys.exit()在Python多线程内调用时不会退出相关的知识,希望对你有一定的参考价值。
最近在多线程内调用sys.exit()时发现不会退出
import sys, time
from threading import Thread
def testexit():
time.sleep(5)
sys.exit()
print "post thread exit"
t = Thread(target = testexit)
t.start()
t.join()
print "pre main exit, post thread exit"
sys.exit()
print "post main exit"
解决办法是:用os._exit()来强制直接退出
原因是sys.exit()是引发一个SystemExit异常,因为是在子线程引出异常的,所以它是子线程退出,主线程还是正常运行
以上是关于sys.exit()在Python多线程内调用时不会退出的主要内容,如果未能解决你的问题,请参考以下文章
Python - twisted reactor - 从线程角度看callLater和callFromThread之间的区别