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

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

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

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

14 ответов

30 просмотров

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

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 ༒🇷🇺 Автор вопроса

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта