170 похожих чатов

Добрый вечер, у меня есть 2 одинаковых модуля, однако один

async(использует aiohttp), другой sync(использует requests); по функционалу они идентичны: при вызове соответствующего метода происходит http.get запрос на сервер, далее с полученными данными работает bs4 и под конец метод возвращает нужный результат.

У меня вопрос: как мне следует поступить: разделить модули на 2 разных или написать один(слить), но в котором будут дубликаты кода(файлы sync_base, async_base и base - в котором будет bs4)?

14 ответов

8 просмотров

Про дубликаты совсем не понял, прости. Про синк честно говоря тоже (может многопоток?)

Saint-JKearnsl ༒🇷🇺 Автор вопроса

Т.к это парсер, некоторые люди, всё же, захотят воспользоваться sync версией(мб будут юзать telebot в связке) Async тут очень нужен для людей, пишущих asyncio приложения, а также для того, чтобы ускорить парсинг: При вызове метода 'get_new' выполняется и обрабатывается get запрос для получения ids манги(по умолчанию 20шт) Далее происходит 20 get запросов, чтобы получить html(страницы описания) 20 манг,- тут то и спасает async (сервер не очень шустрый, из-за чего явный буст)

Saint-JKearnsl ༒🇷🇺 Автор вопроса
Владимир
Про дубликаты совсем не понял, прости. Про синк че...

Насчёт 'многопотока' что-то не очень понял: читал как-то про GIL

Saint JKearnsl ༒🇷🇺
Насчёт 'многопотока' что-то не очень понял: читал ...

Ну ты даже в чате можешь gil в поиск вбить - тут это обсуждалось много раз. Если вкратце, то запрос в сеть это io-bound, не тот случай. А так лучше повникай посерьезнее, конечно. Это очень сложная тема

Saint JKearnsl ༒🇷🇺
Т.к это парсер, некоторые люди, всё же, захотят во...

Ты пишешь что Сервер не шустрый но асинк спасает... Ээээ?)

Saint-JKearnsl ༒🇷🇺 Автор вопроса
Владимир
Ты пишешь что Сервер не шустрый но асинк спасает.....

Понимаю async так: |- поток | | -- await (ждём ответа от сервера, не блокируя основной поток) | | ... | ... | - ответ пришёл, выполним то, что предначертано... | | Читал аналогию с использованием asyncio для обращения к бд

Saint-JKearnsl ༒🇷🇺 Автор вопроса
Владимир
Ты пишешь что Сервер не шустрый но асинк спасает.....

Если я отправляю одновременно 20 запросов, то на мой взгляд, тут async должно выигрывать: ... | - await (ждём ответа от сервера) | | - await (ждём ответа от сервера) | | - await (ждём ответа от сервера) | ... Нежели sync: ... | |- ждём ответа от сервера, из-за чего ждём все вместе сразу... (Блокировка потока) Ps: еду в поезде, не могу быстро ответить из-за интернета

Saint JKearnsl ༒🇷🇺
Понимаю async так: |- поток | | -- await (ждём от...

А можешь статью скинуть, где ты это вычитал?

Saint JKearnsl ༒🇷🇺
Понимаю async так: |- поток | | -- await (ждём от...

asyncio: await func() - блокируем текущий "поток выполнения" (таск, не путать с потоком ОС) ответ пришел, делаем дальше треды: func() - блокируем текущий поток выполнения (он же поток ОС) ответ пришел, делаем дальше asyncio с несколькими таксками t1 = asyncio.create_task(func()) - запускаем первую функцию t2 = asyncio.create_task(func2()) - запускаем вторую функцию await asyncio.gather([t1,t1]) - блокиурем текущий поток выполнения до их завершения тредпулэкзекьютор: f1 = executor.submit(func) - запускаем первую функцию f2 = executor.submit(func2) - запускаем вторую функцию r1 = f1.result() - блокиурем текущий поток выполнения до завеошения первой r2 = f2.result() - блокиурем текущий поток выполнения до завершения второй

Saint-JKearnsl ༒🇷🇺 Автор вопроса

Похожие вопросы

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
46
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
вопрос по москвину - не понимаю вот такого вопроса похоже Сколько разных всегда завершающихся функций с типом a -> a -> b -> a -> a можно реализовать? Две функции одинаково...
Fedor
11
Слушайте, ещё такая интересная задачка. Сделан аудит действий пользователей через триггеры в базе, соответственно каждый пользователь имеет свой логин и пароль в базе. Это пре...
Сергей Бычков
11
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
Утра доброго. Просветите пожалуйста. Хочу сделать rest сервер на делфи. Посмотрел 3 фреймворка: dmvc, Mars, mormot. Ни в одном из них не упоминается ассинхронная обработка вхо...
Сергей Бычков
10
возможно для форматирования TimeStampZ нужен другой механизм, не?
Роман Лях (rgreat)
13
вопрос странный немного... в секции interface идёт константа const TableExt: array [0..39] of record _type: byte; _ext : string; end = ( (_type:typeDAT ...
Alexey Kulakov
5
Всем привет! Помогите разобраться с Lazarus. Переношу программу с Delphi 10.2 Tokyo на Lazarus 3.2. У меня есть строка string которая изначально имеет такое содержание (то чт...
Дмитрий Завгородний
4
Карта сайта