Как поток повторно вводит буферизованный объект? - PullRequest
0 голосов
/ 17 февраля 2020

Я читал документы для буферов в пакете io в Python, но я был озадачен последним разделом о Reentrancy, увиденным здесь: https://docs.python.org/3/library/io.html#reentrancy. Вот что он говорит:

Двоичные буферизованные объекты (экземпляры BufferedReader, BufferedWriter, BufferedRandom и BufferedRWPair) не реентерабельны. Хотя повторные входящие вызовы не будут происходить в обычных ситуациях, они могут возникать из-за выполнения операций ввода-вывода в обработчике сигналов. Если поток пытается повторно ввести буферизованный объект, к которому он уже обращается, возникает RuntimeError. Обратите внимание, что это не запрещает другому потоку вводить буферизованный объект.

Вышесказанное неявно распространяется на текстовые файлы, поскольку функция open () обернет буферизованный объект внутри TextIOWrapper. Это включает в себя стандартные потоки и, следовательно, также влияет на встроенную функцию print ().

В частности, я запутался в этой строке:

Если поток пытается для повторного ввода буферизованного объекта, к которому он уже обращается, возникает ошибка RuntimeError

Что это значит? Как поток вообще «входит» в буферизованный объект?

...