如何很好地关闭python程序?
我正在编写一个从队列中获取元素来处理它们的工作者。 我想确保在停止之前等待处理当前项目。
我不是要求队列部分的解决方案。我想知道如何能够赶上"退出" /"停止"如果我执行Ctrl + C或者杀死,那么来自python程序外部的信号。
由于
答案 0 :(得分:0)
在外部设置完成标志,在处理完每个项目后,在将下一个项目从队列中取出之前检查该标志,如果设置为exit。
您可以使用signal
捕获退出信号,示例位于this SO问题&回答或者您可以atexit.register
注册一个能够优雅地完成处理的功能。
很大程度上取决于你如何构建其余的代码 - 如果你使用的是工作线程/子进程/多进程,那么atexit可能就是这样,如果你在main中完成所有的工作,那么信号可能会更好地工作你。