Понять реализацию циклов событий в Python asyncio - PullRequest
0 голосов
/ 09 июля 2020

Я смотрю import asyncio: Изучите Python AsyncIO # 2 - Событие L oop, чтобы попытаться понять внутреннюю работу циклов событий. В видео инструктор попытался объяснить это на уровне операционной системы. Однако я очень мало знаю об операционных системах, и мне очень трудно понять его объяснение.

Вопросы

В 9: 46 , Инструктор показал руководство по системным вызовам о методе select.

  1. Инструктор сказал, что метод select позволяет нам предоставить список файловых дескрипторов. Что такое файловый дескриптор?
  2. Что делает метод select? Что произойдет с предоставленными файловыми дескрипторами после вызова для них select?
  3. В руководстве сказано, что метод select - это «синхронное мультиплексирование ввода-вывода». Что такое мультиплексирование? Каким образом метод select является «мультиплексированием синхронного ввода-вывода»?
  4. Как реализация 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 в коде? Что они делают?

Наконец,

Какие общие знания в области информатики мне нужно знать, чтобы понимать циклы событий?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...