在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