我能想到的退出Python环境的明显方法是sys.exit()或os._exit()。但是,sys.exit()不在主线程之外工作,os._exit()也不运行关闭处理程序(例如那些通过atexit.register注册的处理程序)。另外,当有非守护进程线程正在运行时,仅仅退出主线程(例如,可能通过thread.interrupt_main执行)也不会使环境的其余部分关闭。
是否有方法使Python退出另一个线程,而不是运行关闭处理程序的主线程?
发布于 2014-04-13 17:07:58
这取决于你所说的“有序”是什么意思。
即使您没有任何非守护进程线程,如果从主线程调用sys.exit(),其他线程也不会以“有序”的方式完成。不能保证他们会自己收拾残局。
唯一真正干净的方法是主线程向它们应该完成和中止的其他线程发出信号(例如,通过设置一个标志或一个Event (它们定期检查)),等待它们完成(通过对它们进行join化),然后从它的main函数返回。
https://stackoverflow.com/questions/23045524
复制相似问题