一尘不染

sys.exit实际上对多个线程有什么作用?

python

我真的对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()真正的作用是什么?


阅读 212

收藏
2020-12-20

共1个答案

一尘不染

根据文件sys.exit()提出SystemExit

通过提高SystemExit(status)退出解释器。

如果SystemExit到达默认的异常处理程序,它将调用handle_system_exit(),或多或少地推送到Py_Finalize(),然后wait_for_thread_shutdown()在Python
2中依次调用,所以sys.exit()这与在等待所有非守护进程线程正常运行 时脱离主模块底部 的正常情况相同终止。

2020-12-20