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 os._exit() sys.exit()

Python - twisted reactor - 从线程角度看callLater和callFromThread之间的区别

有序关闭 Python 环境

Python:使用sys.exit或SystemExit的差异和建议

sys.exit() os._exit() python在代码里实现退出程序