我真的对python中的sys.exit()感到困惑。在python文档中,它说“从Python退出”;这是否意味着sys.exit()在python程序中被调用时,进程将退出?如果是这样,下面的代码将显示不同的结果:
sys.exit()
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
通过提高SystemExit(status)退出解释器。
如果SystemExit到达默认的异常处理程序,它将调用handle_system_exit(),或多或少地推送到Py_Finalize(),然后wait_for_thread_shutdown()在Python 2中依次调用,所以sys.exit()这与在等待所有非守护进程线程正常运行 时脱离主模块底部 的正常情况相同终止。
handle_system_exit()
Py_Finalize()
wait_for_thread_shutdown()