Python Russian

Python Russian 

простым языком о прекрасном языке программирования

54subscribers

78posts

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

Поговорим про multiprocessing - способ реального распараллеливания задач на ядра компьютера. Multiprocessing позволяет решать любые задачи (IO-bound или CPU-bound)
Ускорение не идеально и возможно только до определенного предела, смотрим закон Амдала.
Создает несколько процессов, у каждого из которых своя память и свой GIL, каждый выполняет свою задачу, взаимодействие между ними требует pickle
API принципиально похоже на многопоточность, выгодно использовать Pool, а для взаимодействия между процессами Queue и Pipe
Плюсы:
+ реальная параллельность любых задач
+ не умирает из-за одного(!)
+ процессы не зависят друг от друга(у каждого процесса своя память и GIL)
Минусы:
- потребление ресурсов (памяти, процессора, времени)
- необходимость сериализации в pickle
- проблемы синхронизации (взаимодействие между процессами)
Читать:
https://docs.python.org/3/library/multiprocessing.html#module-multiprocessing
Фаулер М. "Asyncio и конкурентное программирование на Python"
Subscription levels3

Большое спасибо

$2.57 per month
На поддержку канала и просто в знак благодарности

На новые идеи

$6.5 per month
Чтобы новые видео появлялись и для поддержки вдохновения

Show must go on...

$12.9 per month
На хорошее кофе и для металлу в голосе
Go up