Python Glossary English

Python 3.5+osфункция

os.set_blocking

os — режим дескриптора

Переключает дескриптор между блокирующим и неблокирующим режимом. На Windows — с Python 3.12 и только для каналов.

Синтаксис

os.set_blocking(...)

После перевода в неблокирующий режим os.read и os.write не ждут, а поднимают BlockingIOError; код должен быть готов к этому и к частичным записям. Флаг принадлежит открытому файлу, а не номеру: копии через dup и унаследованные дочерним процессом меняются вместе. На Windows с 3.12 работает только для каналов.

Примеры

import os
r, w = os.pipe()
os.set_blocking(r, False)   # → только Unix: канал переведён в неблокирующий режим, возвращает None
print(os.get_blocking(r))   # → только Unix: False — режим действительно сменился
print(os.read(r, 10))   # → только Unix: BlockingIOError — данных нет, но чтение не ждёт, а сразу падает
os.set_blocking(r, True)   # → только Unix: вернули блокирующий режим, теперь os.read(r, 10) будет ждать данные

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности