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

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

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

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

14 ответов

25 просмотров

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

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

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

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

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта