2017-02-20 4 views
1

aiohttp В библиотеках documentation состояния:Зачем использовать явный параметр цикла с aiohttp?

петля - петля события используется для обработки HTTP-запросов. Если параметр равен None, для получения цикла событий по умолчанию используется asyncio.get_event_loop(), но мы настоятельно рекомендуем использовать явные петли повсюду. (Опционально)

можно передать loop на ClientSession объекты, предоставляемые «модуль уровня» функций и т.д.

Я новичок в асинхронном концепции программирования в целом, не могли бы вы объяснить me почему рекомендуется явно предоставлять цикл для использования, вместо того чтобы позволить объектам/функциям использовать только по умолчанию?

Одно использование, которое приходит на ум, облегчает тестирование, предоставляя мои собственные петлевые макеты, есть ли причина в производительности?

ответ

1

Причина - читаемость, а не производительность.

Задание цикла в явном виде упростит разработчику возможность увидеть, откуда возник экземпляр цикла, и может упростить изменение цикла, если пользовательский цикл должен быть введен в программу.

Другим популярным вариантом будет never указать параметр цикла, и поэтому предположить, что asyncio.get_event_loop() всегда вызывается для получения экземпляра цикла.

(Можно использовать более одного контура - например, в разных потоках, но это не обычный вариант использования)

Смежные вопросы