python - 在退出 Python 程序之前等待所有守护线程完成的简单方法?
问题描述
我有一个长时间运行的操作,它从一个守护线程监视,并在完成后在主线程中调用一个回调。
当只剩下守护线程时,Python 程序退出。这在我的情况下有点不幸,因为这意味着如果程序在长时间运行的操作完成之前退出,则永远不会调用回调。
回调调度和监控发生在一个外部库的深处,所以我不能轻易修改它(长时间运行的操作是 a google.api_core.operation.Operation
)。
有没有一种简单的方法来等待这个守护线程从我的客户端代码完成?或者另一种确保回调运行的方法?
解决方案
如果您想在主程序退出之前等待守护线程退出,但由于某种原因您没有对这些线程的引用,则该threading
模块已为您提供:
它提供了一个枚举函数,该函数返回当前活动线程的列表。只需遍历其结果和join()
您感兴趣的线程即可。
推荐阅读
- android - Android 按钮文本颜色动画
- amazon-web-services - 排查 ECS 任务未通过容器健康检查
- github - GitHub 操作触发构建新的拉取请求
- css - 如何使文本区域完全适合动态内容而不会溢出?
- linux - 如何在没有端口映射器的 Ubuntu docker 实例中运行 Ubuntu NFS V4 内核服务器?
- python - Pygame、Python 3.8.3 和外星人入侵
- php - 如何在 Laravel 7 中查询列类型并检索布尔值?
- laravel - 我在用户搜索功能的第二页上得到未定义的变量,请解决这个问题
- mysql - MySQL:是通过忽略该锁从锁定表中选择数据的任何方式
- ruby-on-rails - 如何在rails中删除带有类的特定标签?