Я смотрю import asyncio: Изучите Python AsyncIO # 2 - Событие L oop, чтобы попытаться понять внутреннюю работу циклов событий. В видео инструктор попытался объяснить это на уровне операционной системы. Однако я очень мало знаю об операционных системах, и мне очень трудно понять его объяснение.
Вопросы
В 9: 46 , Инструктор показал руководство по системным вызовам о методе select
.
- Инструктор сказал, что метод
select
позволяет нам предоставить список файловых дескрипторов. Что такое файловый дескриптор? - Что делает метод
select
? Что произойдет с предоставленными файловыми дескрипторами после вызова для них select
? - В руководстве сказано, что метод
select
- это «синхронное мультиплексирование ввода-вывода». Что такое мультиплексирование? Каким образом метод select
является «мультиплексированием синхронного ввода-вывода»? - Как реализация Python циклов событий использует метод
select
?
В 11: 11 инструктор показал руководство Центра разработки Windows о «Портах завершения ввода-вывода».
Инструктор сказал, что «если событий больше, чем доступных потоков, некоторые события будут ждать, пока один из потоков в пуле не освободится». Таким образом, в основном это работает аналогично
concurrent.futures.ThreadPoolExecutor
? Как реализация Python циклов событий использует «Порты завершения ввода-вывода»?
At 22: 31 , инструктор показал исходный код метода _run_once
в base_events.py
.
Второй шаг метода
_run_once
- это опрос ввода-вывода. Опрашивает ли он ввод-вывод с помощью метода
_select.select
в строке 1854 (
24: 41 )?
При 25: 30 , преподаватель показал исходный код метода _process_events
в selector_events.py
.
К чему относятся переменные
mask
,
selectors
,
reader
,
writer
в коде? Что они делают?
Наконец,
Какие общие знания в области информатики мне нужно знать, чтобы понимать циклы событий?