如何很好地关闭python程序?

时间:2014-11-06 22:44:24

标签: python

如何很好地关闭python程序?

我正在编写一个从队列中获取元素来处理它们的工作者。 我想确保在停止之前等待处理当前项目。

我不是要求队列部分的解决方案。我想知道如何能够赶上"退出" /"停止"如果我执行Ctrl + C或者杀死,那么来自python程序外部的信号。

由于

1 个答案:

答案 0 :(得分:0)

在外部设置完成标志,在处理完每个项目后,在将下一个项目从队列中取出之前检查该标志,如果设置为exit。

您可以使用signal 捕获退出信号,示例位于this SO问题&回答或者您可以atexit.register注册一个能够优雅地完成处理的功能。

很大程度上取决于你如何构建其余的代码 - 如果你使用的是工作线程/子进程/多进程,那么atexit可能就是这样,如果你在main中完成所有的工作,那么信号可能会更好地工作你。