Найти - Пользователи
Полная версия: Сколько ядер задействует asyncio?
Начало » Центр помощи » Сколько ядер задействует asyncio?
1
ivanzzzz
asyncio использует все доступные ядра? Или как нити только 1?
FishHook
ivanzzzz
Вы очень сильно путаете понятия. Нити, как раз, могут использовать все ядра процессора, более того - в этом их преимущество. Проблема нитей в том, что во-первых есть оверхед на переключение контекста (внутри ядра), во-вторых есть проблемы с конкурентным доступом к данным. Фактически, на некоторых задачах, нити не дают выигрыша в производительности. Асинхронная программа выполняется в одном потоке и процессе, она не распараллеливается и поэтому никак не может выполняться одновременно на нескольких ядрах. Преимущество асинхронности проявляется на задачах, в которых поток выполнения преимущественно ждет результатов какого-то стороннего процесса, например ответа на запрос к БД или ввода данных пользователем. В этом случае (когда наступил момент ожидания) асинхронная программа переключается на выполнение другой задачи и не тратит процессорное время на нагрев воздуха.
doza_and
FishHook
использует все доступные ядра? Или как нити только 1?
:) ни один вариант не угадал!
Я так понимаю что при запуске есть два треда (дополнительный для обслуживания пулов экзекюторов). Но можете задействовать сколько хотите.
см.
run_in_executor
ivanzzzz
FishHook
ivanzzzzВы очень сильно путаете понятия. Нити, как раз, могут использовать все ядра процессора, более того - в этом их преимущество.
Судя по видео https://youtu.be/ys8lW8eQaJQ?t=7m29s GIL не дает нитям использовать больше 1 ядра.
FishHook
ivanzzzz
Я вам говорил про потоки в принципе, а не в питоне. В питоне они вообще практически бесполезны и их редко используют.
ivanzzzz
FishHook
ivanzzzzЯ вам говорил про потоки в принципе, а не в питоне. В питоне они вообще практически бесполезны и их редко используют.
ок буду знать, но я все в контексте питона
doza_and
FishHook
В питоне они вообще практически бесполезны и их редко используют.
:) Не совсем соглашусь, или совсем не соглашусь. GIL отпускается когда вызываются модули расширения (скомпилированные dll/so) А поскольку если чтото долго считается то его первым делом компилируют то вполне даже часто используется многопоточность и вполне она имеет смысл.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB