在退出Python程序之前等待所有deamon线程完成的简单方法?

时间:2018-05-02 13:42:43

标签: python multithreading python-multithreading google-cloud-python

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

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

回调计划和监控发生在外部库的深处,因此我无法轻易修改它(长时间运行的操作是google.api_core.operation.Operation)。

是否有一种简单的方法可以等待此守护程序线程从我的客户端代码中完成?或者另一种确保回调运行的方法?

1 个答案:

答案 0 :(得分:1)

如果你想在主程序退出之前等待守护程序线程退出,但由于某些原因你没有引用这些线程,threading模块可以覆盖你:

它提供了一个enumerate函数,它返回当前活动线程的列表。只需循环查看结果并join()您感兴趣的主题。