Вопросы к Поиску с Алисой
Одноразовые и многоразовые контекстные менеджеры в Python отличаются возможностью повторного использования. digitology.tech docs-python.ru
Одноразовые менеджеры контекста можно использовать только один раз. digitology.tech docs-python.ru Они должны создаваться заново каждый раз, когда применяются. digitology.tech docs-python.ru Попытка использовать их во второй раз вызовет исключение или приведёт к некорректной работе. digitology.tech docs-python.ru
Многоразовые менеджеры контекста, в отличие от одноразовых, поддерживают многократное использование. digitology.tech Однако они не будут работать, если экземпляр контекстного менеджера уже использовался в операторе with. digitology.tech
Примеры одноразовых контекстных менеджеров: файлы (первый оператор with закрывает файл, предотвращая дальнейшие операции ввода-вывода) и менеджеры, созданные с использованием contextmanager(). digitology.tech docs-python.ru
Примеры многоразовых контекстных менеджеров: threading.RLock (можно использовать в нескольких операторах with и внутри оператора with, который уже использует тот же менеджер контекста) и ExitStack (вызывает все зарегистрированные обратные вызовы при выходе из любого оператора with). digitology.tech