В Python я могу использовать модуль atexit для регистрации функции, которая будет выполняться при выходе Python. Есть ли способ получить список зарегистрированных обработчиков выходных данных?Как я могу получить список зарегистрированных функций atexit в Python3?
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. список зарегистрированных функций выключения
- 2. Список вызовов функций в Python3
- 3. Могу ли я получить список услуг, зарегистрированных в TfsTeamProjectCollection
- 4. Получить список зарегистрированных пользователей
- 5. Как получить список зарегистрированных пользователей?
- 6. Как получить список зарегистрированных пользователей?
- 7. Сколько функций было зарегистрировано atexit()?
- 8. Python3 Запуск atexit только по основному процессу
- 9. Как получить список зарегистрированных лиц в Symfony2
- 10. Получить список зарегистрированных пользователей PHP
- 11. Получить ссылки на функции, зарегистрированные через atexit()
- 12. Сельдерей Получить список зарегистрированных задач
- 13. Как получить список всех зарегистрированных маршрутов
- 14. Как я могу получить список функций widgetVar PrimeFaces?
- 15. Как получить список зарегистрированных файловых систем?
- 16. Получить список всех зарегистрированных соединений
- 17. Могу ли я получить список функций в Xcode?
- 18. В C отсутствует связь между «Основными целями процесса» для «вызова любых функций, зарегистрированных с помощью atexit»
- 19. Android - Как получить список зарегистрированных геофонов
- 20. Как получить список зарегистрированных пользовательских элементов
- 21. KVO - Как получить список объектов, зарегистрированных наблюдателями
- 22. Как получить Unix как atexit в Powershell?
- 23. Список URI, зарегистрированных FakeWeb
- 24. Как я могу получить список всех зарегистрированных тегов и фильтров в моих шаблонах Django?
- 25. FB Graph API Как я могу получить список всех пользователей, когда-либо зарегистрированных в моем приложении?
- 26. Как я могу получить список всех пользователей, зарегистрированных в моем веб-приложение
- 27. Как я могу получить всех зарегистрированных пользователей на моем сайте?
- 28. Где я могу получить список функций Crystal Reports?
- 29. Где я могу найти список функций Java
- 30. Как я могу получить «старый» zip() в Python3?
Вы могли бы, однако, обезьяна-патч 'atexit' модуль, чтобы сохранить свой список обработчиков перед вызовом библиотечных функций. – kindall
@kindall: Нет, вы не можете. Это C-модуль, который не может быть исправлен обезьяной. –
Уверен, что вы можете просто заменить весь модуль в 'sys.modules'. Это достаточно просто, потому что в модуле есть только две функции. – kindall