@Mikkkch

Стоит ли асинхронность использовать при парсинге?

Здравствуйте, есть ли смысл использовать асинхронный подход к программированию в случае, когда перед нами стоит задача принимать неограниченное количество ссылок и мониторить их до тех пор, пока не появится нужный элемент?
Возможно вопрос покажется кому-то неуместным, но все же попрошу отнестись лояльней.
  • Вопрос задан
  • 126 просмотров
Решения вопроса 1
@deliro
Агрессивное программирование
Парсинг — это чуть ли не первое в списке того, ради чего стоит использовать асинхронность. Чем больше IO операций — тем больше преимуществ у асинхронного подхода перед тредпулом. Если при парсинге необходимо выполнять CPU-bound операции (разбор XML/HTML и прочее) — это выносится в тредпул (для питона — процеспул) и через асинхронные биндинги (например, в питоне это run_in_executor) отдаётся на откуп туда, главный же поток при этом не блокируется.

Пример на коленке, который парсит граф ссылок с википедии, с процесспулом, lxml и прочими ништяками: тык
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Да. Но есть нюанс.
Если это линки одного домена - нужно контролировать максимальное количество параллельных соединений к одному домену и частоту запросов.
Ответ написан
firedragon
@firedragon
Senior .NET developer
Я бы использовал обычный threadpool. Все тоже самое, но больше контроля за памятью и ресурсами
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы