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

发布于 2021-01-29 19:14:47

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

关注者
0
被浏览
47
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

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

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看