Python';非守护进程线程无限期等待锁时的s sys.exit行为

Python';非守护进程线程无限期等待锁时的s sys.exit行为,python,locking,exit,Python,Locking,Exit,我对Python比较陌生,希望在下面的例子中了解sys.exit()的行为 主线程调用sys.exit(),但另一个非守护进程线程已经无限期地等待某个锁 我已经在我的程序中对此进行了测试,看起来整个程序没有退出。这是预期的吗?我不确定非守护进程线程是否正在处理SystemExit异常,因为它位于第三方库中 提前感谢您的帮助。对于使用线程模块创建的线程,主线程在退出时连接所有非守护进程线程。通过搜索exitfunc(在Python 2.4.5、2.7.2和3.2.2源代码中验证),可以在threa

我对Python比较陌生,希望在下面的例子中了解sys.exit()的行为

主线程调用sys.exit(),但另一个非守护进程线程已经无限期地等待某个锁

我已经在我的程序中对此进行了测试,看起来整个程序没有退出。这是预期的吗?我不确定非守护进程线程是否正在处理SystemExit异常,因为它位于第三方库中


提前感谢您的帮助。

对于使用
线程
模块创建的线程,主线程在退出时连接所有非守护进程线程。通过搜索
exitfunc
(在Python 2.4.5、2.7.2和3.2.2源代码中验证),可以在
threading.py
中看到这一点

如果您有一些非守护进程线程正在等待锁,并且您没有安排释放锁,那么主线程将在退出时挂起


正如Patrick提到的,您可以通过使用
exit\uuu
更直接地退出程序,但这会绕过所有清理功能,可能不适合您的应用程序。

如果您以不同方式退出程序,可能会: