Multiprocessing: используем все ядра

preview_player
Показать описание
Поговорим про multiprocessing - способ реального распараллеливания задач на ядра компьютера. Multiprocessing позволяет решать любые задачи (IO-bound или CPU-bound)

Ускорение не идеально и возможно только до определенного предела, смотрим закон Амдала.

Создает несколько процессов, у каждого из которых своя память и свой GIL, каждый выполняет свою задачу, взаимодействие между ними требует pickle
API принципиально похоже на многопоточность, выгодно использовать Pool, а для взаимодействия между процессами Queue и Pipe

Плюсы:
+ реальная параллельность любых задач
+ не умирает из-за одного(!)
+ процессы не зависят друг от друга(у каждого процесса своя память и GIL)
Минусы:
- потребление ресурсов (памяти, процессора, времени)
- необходимость сериализации в pickle
- проблемы синхронизации (взаимодействие между процессами)

Читать:

Фаулер М. "Asyncio и конкурентное программирование на Python"

Присоединяйтесь к помощи каналу, будет интересно)
✔️Юмани 410011506612886

Будь первым везде и всегда, включай уведомления о новых выпусках 🔔

Смотри там где удобно🤩

#Python #PythonRussian #multiprocessing
Рекомендации по теме
Комментарии
Автор

кто не подписан на канал, тот использует только одно ядро =)

PythonRussian
Автор

Огромное вам спасибо за ваш труд! Вы очень классный преподаватель и питонист, слежу за каналом уже давно. Прекрасно даёте первичную информацию и знакомите с различными инструментами. Отдельная благодарность за рекомендации крутейших книг и материалов, помогающих сформировать вектор дальнейшего обучения. Единственный минус - редко выходят ролики, но вас можно понять. Ещё раз спасибо, благодаря вашей деятельности по уши влюбился в Python!

ЕгорСветличный-щф
Автор

Отличный материал, а что скажите насчёт aiomultiprocessing ?

stvJnK
Автор

Здравствуйте, у вас отличные видео! Не думали ли разбавить канал смежными технологиями для работы питонистом: Celery, RabbitMQ, БД (NoSQL (Redis), SQL (PostgreSQL)), Архитектурные видео, системы логирования, devops базу, rest ful (типа про сети рассказать), такое вот?

stic
Автор

Коммент для благодарности вам и увеличение вовлеченности на канал 🎉

MioGesa-mdul
Автор

Я так понимаю, что в книге Фаулера не только про asyncio, но и про потоки и мультипроцесы? Хотелось бы видос про виртуальное окружения venv, там вроде немного, но полезно

neydygdrg
Автор

Могу ли я создать несколько процессов и в каждом процессе несколько потоков, то есть миксовать process и thread?

frezz
Автор

Скажите, могу ли я подучить консультацию по мультипрлцессингу? Разумеется не бесплатно)

Мучаюсь над одной задачей - никак не могу справиться.

Спасибо!

antonvorobiev
Автор

Не-не, нас не проведешь! Мы поставим python 4 и все будет легко и просто!

DmitryRomantsov
Автор

а потоки не тоже самое? потоки GIL обходят?

warmybo
Автор

Привет. У меня проблема. Работают несколько процессов. Завершение через нажатие кнопки - процесс который поймал нажатие передаёт 'stop' в общую queue и завершается, остальные процессы ищут этот стоп в очереди и завершаются также. Это работает стабильно если не дольше примерно часа-двух. Но если например через 6 часов или сутки - то процесс который поймал нажатие клавиши завершается, а остальные просто перестают выполнять работу и зависают пока принудительно их не завершить. Есть идеи в чем дело?)

Миха-ьх
Автор

Видео из серии я не зануда, зануда это не я.

ciklomat