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异常,因为是在子线程引出异常的,所以它是子线程退出,主线程还是正常运行

 

 

 


版权声明:本文为Jason_WangYing原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。