在Python中,我可以使用atexit模块注册Python退出时要执行的函数。有没有办法检索注册退出处理程序的列表?如何获得Python3中已注册的atexit函数列表?
1
A
回答
3
在Python 2,当模块仍可作为一个专用的Python中,atexit
模块有一个半私有列表:
atexit._exithandlers
持有所有已注册的退出处理。
在Python 3中,模块已被重新编码为C,并且列表不再可访问,所以对于Python 3,您恐怕平平无奇。
您必须将Python 2 pure-python version移植到Python 3,并确保使用它来代替C版本,以使列表再次可访问。
0
在Python 3,atexit._exithandlers列表不可用,但如果你只需要算注册的回调,你可以这样做:
atexit._ncallbacks()
演示:
# python3
Python 3.5.3rc1 (default, Jan 3 2017, 04:40:57)
[GCC 6.3.0 20161229] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import atexit
>>> atexit._ncallbacks()
2
相关问题
- 1. 在已注册的atexit函数中获取错误追踪
- 2. 何时用atexit()注册的函数调用
- 3. 如何确保注册的atexit函数能够在PyObjC的AppHelper.runEventLoop()中运行?
- 4. 如何获得注册的实体列表中的Symfony2
- 5. 检索对通过atexit注册的函数的引用()
- 6. 如何获得注册的视图列表中棱镜与MEF
- 7. 如何获得IWindsorContainer(C#)中注册程序集的列表
- 8. 用atexit()注册的函数没有被调用
- 9. 如何获取已注册的自定义元素列表
- 10. 的atexit()函数
- 11. 从注册表获得
- 12. 从注册表获得C#
- 13. KVO - 如何获得一个注册观察对象的列表
- 14. 在atexit()的Execv注册问题()
- 15. 如何获得所有已注册的服务类型Autofac
- 16. 获取AWS Route53中已注册域名的列表
- 17. 充分利用()使用atexit注册的函数中退出状态
- 18. 如何获得PrimeFaces widgetVar函数列表?
- 19. Magento注册表单使用VarienForm函数验证获得回复
- 20. 根据退出状态使得atexit注册功能起作用
- 21. Python如何获得注册表中的文件夹名称
- 22. 获得注册的侧边栏列表中ACF
- 23. 我如何知道手表已注册?
- 24. 获得对Runnable中已注册的EntityManager的访问
- 25. 注册表GetValue函数
- 26. 如何注册gcm从gcm获得注册ID
- 27. 获取已注册的注释
- 28. 检索已注册路由列表
- 29. 如何注册已在管理员中注册的模型?
- 30. Android - 如何检索已注册地理栅栏的列表
你可以,然而,在调用库函数之前,将“atexit”模块用于保存自己的处理程序列表。 – kindall
@ kindall:不,你不能。它是一个C模块,那些不能被猴子修补。 –
当然你可以,你只需要替换'sys.modules'中的整个模块。这很简单,因为模块中只有两个功能。 – kindall