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

Всем привет. Когда лучше threading, а когда multiprocessing для "ускорения"

запросов к API (или другие варианты)?

Мой случай: циклом for обрабатываю данные, в каждой итерации отправляю запрос к API для получения других данных. Можно это как-то ускорить?

P.S. обернул в таймер (декоратор) каждый такой запрос примерно занимает 0.2-0.5 сек, что очень много в сравнении с остальной логикой
Спасибо

16 ответов

7 просмотров

Запросы к апи перпендикулярно мультипроцессингу

Andrey- Автор вопроса
Kirill Shikhalev
Запросы к апи перпендикулярно мультипроцессингу

То есть процессинг лучше для требовательных к вычислениями функциям?

Kirill Shikhalev
Да, он именно для этого и создан

Нет, но распараллеливание CPU-bound задач является одной из распространенных задач решаемых при помощи мультипроцессинга.

так это асинхронку надо делать, зачем же треадинг. В python-binance есть асинхронный клиент

Noname
так это асинхронку надо делать, зачем же треадинг....

А почему трединг не подходит? Я вот в аналогичной ситуации ThreadPoolExecutor использовал.

Andrey- Автор вопроса
Alex
А почему трединг не подходит? Я вот в аналогичной ...

Не спорю можно и потоками и по ядрам раскидать. Но кмк отдельные потоки или процессы имеют смысл если есть чем их нагрузить, а если задача потока - тупо ждать json с бинанса то асинхронка в одном потоке логичнее, чем мутить пул тредов которые будут просто простаивать в ожидании ответа.

Noname
Не спорю можно и потоками и по ядрам раскидать. Но...

ну и........ пусть простаивает. Там же не while True: pass. Ос видит что поток бездействует и переводит его в саспенд (или как оно называется) и он не грузит систему.

Alex
А почему трединг не подходит? Я вот в аналогичной ...

Треды несколько медленнее асинхронки. Потому что какая-то изоляция все-таки происходит, а асинхронка насколько я знаю в одном потоке крутится и на поддержание потока ничего не тратится

Noname
Не спорю можно и потоками и по ядрам раскидать. Но...

> Не спорю можно и потоками и по ядрам раскидать. тут речь про IO-bound шла. и да, "раскидай" в общем случае. > логичнее чем принципиально логичнее? > Треды несколько медленнее асинхронки. зачастую наоборот. > Потому что какая-то изоляция все-таки происходит букварь по системному программированию живо 🤦‍♂️

Alex
> Не спорю можно и потоками и по ядрам раскидать. ...

Я не глубоко знаю тему но интересно послушать мнения. Что касается логики, то мне не ясно как многопоточность ускорит получение ответов на http-запросы? Ну засунули блокирующую операцию не в корутину а в поток, ну перебирает образно gil эти потоки и что? в свой cpu мы же никак не упираемся. Или что i/o поток быстрее достучиться до gil чем eventloop получит результат из корутины?

Noname
Я не глубоко знаю тему но интересно послушать мнен...

1. GIL отпускается на IO операциях 2. ты можешь создать 10 потоков, и они дружно будут ждать пока не приедут ответы. 3. > то мне не ясно как многопоточность ускорит получение ответов на http-запросы тем что вместо последовательного выполнения 10 запросов в одном потоке, ты отправлил сразу N (каждый в своем потоке) и ждешь ответ.

Noname
Я не глубоко знаю тему но интересно послушать мнен...

google://кооперативная vs вытесняющая многозадачность

Noname
так это асинхронку надо делать, зачем же треадинг....

Асинхронный код сложно расширять и поддерживать, да и к тому же намутить минимальное решение

Noname
Я не глубоко знаю тему но интересно послушать мнен...

Трединг в питоне это вытесняющая многозадачность, решение о передаче управления делает ось

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

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

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
Открыл свой двухкилобайтный экзешник в x32dbg, а тут какая-то хрень. Смущает кнопка "выполнить до пользовательского кода", а что ещё может быть в файле помимо него ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
11
Вопрос тем кто смотрит видео и слушает подкасты - как вы потом ищете нужную вам информацию? Вот статью я прочитал, потом могу искать нужную мне часть банальным поиском. Пропус...
Aleksandr Druzhinin
4
Мне были интересны дишные хаки и я нашёл любопытный способ на форуме через __traits, что-то вроде int delegate(int) fac = (int n) => n == 0 ? 1 : n * __traits(parent, {})(n - ...
Constantin F.
1
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
14
@FAssembler ты много с формами работал, как цикл обработки сообщений от окошек надо делать, чтобы IsDialogMessage не ломал ввод в эдиты и навигация по табам работала?
The Bird of Hermes
8
Карта сайта