首页 > 解决方案 > 在退出 Python 程序之前等待所有守护线程完成的简单方法?

问题描述

我有一个长时间运行的操作,它从一个守护线程监视,并在完成后在主线程中调用一个回调。

当只剩下守护线程时,Python 程序退出。这在我的情况下有点不幸,因为这意味着如果程序在长时间运行的操作完成之前退出,则永远不会调用回调。

回调调度和监控发生在一个外部库的深处,所以我不能轻易修改它(长时间运行的操作是 a google.api_core.operation.Operation)。

有没有一种简单的方法来等待这个守护线程从我的客户端代码完成?或者另一种确保回调运行的方法?

标签: pythonmultithreadingpython-multithreadinggoogle-cloud-python

解决方案


如果您想在主程序退出之前等待守护线程退出,但由于某种原因您没有对这些线程的引用,则该threading模块已为您提供:

它提供了一个枚举函数,该函数返回当前活动线程的列表。只需遍历其结果和join()您感兴趣的线程即可。


推荐阅读