问题
我目前有一个简单的 Python 多线程服务器程序,该程序可以永久运行,而无需人工中断。我想实现可以在某个时候优雅地终止它。一旦终止,我希望服务器输出一些统计信息。
我尝试过的解决方案
kill
终止程序。问题是由于HARD终止,服务器无法输出统计信息。 问题
有没有一种方法可以运行某些 bash /或其他程序,以根据统计信息输出正常停止该程序?
答案 0 :(得分:1)
您是否尝试过使用signal.signal()注册处理程序,例如SIGTERM
?在那里,您可以实现这部分代码以丢弃统计信息,然后仅终止程序。
答案 1 :(得分:1)
标准方法是要么
.join()
停止活动的。或
.join()
个线程有些线程可以是.setDaemon(True)
,but only if they can be safely killed off(线程中没有异常或引发任何异常,只是在其所在位置停止了)。
If a thread is in a blocking call,可以通过关闭正在等待的功能(关闭套接字或流)来解除阻止。