sys.exit实际上对多个线程有什么作用?
我真的对python中的sys.exit()感到困惑。在python文档中,它说“从Python退出”;这是否意味着sys.exit()
在python程序中被调用时,进程将退出?如果是这样,下面的代码将显示不同的结果:
import sys
import time
import threading
def threadrun():
while(True):
time.sleep(1)
if __name__=="__main__":
t=threading.Thread(target=threadrun)
t.start()
sys.exit()
在linux中启动该程序,结果不是python文档所说的预期结果,但仍然可以在系统中运行,那么,sys.exit()
真正的作用是什么?
-
根据文件
sys.exit()
提出SystemExit
:通过提高SystemExit(status)退出解释器。
如果
SystemExit
到达默认的异常处理程序,它将调用handle_system_exit()
,或多或少地推送到Py_Finalize()
,然后wait_for_thread_shutdown()
在Python
2中依次调用,所以sys.exit()
这与在等待所有非守护进程线程正常运行 时脱离主模块底部 的正常情况相同终止。