Найти в Дзене

Многопоточное и асинхронное программирование в Python

Привет! Сегодня разберем две мощные техники: многопоточное программирование (threading) и асинхронность (asyncio). Если твой код выполняет долгие операции (например, запросы в интернет или работу с файлами), то это поможет ускорить его! 1. Многопоточное программирование (`threading`) Поток (thread) — это отдельный процесс выполнения кода. В Python потоки полезны, когда программа ждет внешние ресурсы (например, загрузку файлов). Простой пример: запуск двух функций параллельно Вывод (идет вперемешку, так как потоки работают параллельно): Теперь обе функции выполняются одновременно! Когда использовать потоки? При ожидании внешних ресурсов (запросов, файлов, загрузки данных).
Не ускоряет вычисления, так как Python использует GIL (Global Interpreter Lock).
2. Многопроцессное программирование (`multiprocessing`)
Потоки не ускоряют тяжелые вычисления, но процессы (processes) могут!
Пример: запустим два процесса, выполняющих вычисления Теперь Python использует несколько ядер процессора, ус

Привет! Сегодня разберем две мощные техники: многопоточное программирование (threading) и асинхронность (asyncio). Если твой код выполняет долгие операции (например, запросы в интернет или работу с файлами), то это поможет ускорить его!

1. Многопоточное программирование (`threading`)

Поток (thread) — это отдельный процесс выполнения кода. В Python потоки полезны, когда программа ждет внешние ресурсы (например, загрузку файлов).

Простой пример: запуск двух функций параллельно

-2

Вывод (идет вперемешку, так как потоки работают параллельно):

-3

Теперь обе функции выполняются одновременно!

Когда использовать потоки?

При ожидании внешних ресурсов (запросов, файлов, загрузки данных).
Не ускоряет вычисления, так как Python использует GIL (Global Interpreter Lock).

2. Многопроцессное программирование (`multiprocessing`)
Потоки не ускоряют тяжелые вычисления, но процессы (processes) могут!

Пример: запустим два процесса, выполняющих вычисления

-4

Теперь Python использует несколько ядер процессора, ускоряя вычисления.

Когда использовать `multiprocessing`?

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

Не подходит, если код зависит от одного общего объекта (например, базы данных).

3. Асинхронное программирование (`asyncio`)

Асинхронность в Python позволяет запускать код без ожидания других операций. Это особенно полезно для сетевых запросов и обработки событий.

Пример: Асинхронная загрузка данных

-5

Вывод:

-6

Все загрузки выполняются одновременно, без ожидания!

4. Сравнение `threading`, `multiprocessing` и `asyncio`

| Метод | Когда использовать? | Как работает? |


| threading | Если программа
ждет что-то (запросы, файлы) |Несколько потоков в одном процессе |

| multiprocessing | Если нужна
быстрая обработка данных | Несколько процессов (использует все ядра) |

| asyncio | Если код делает
сетевые запросы или работает с событиями | Одна программа, но задачи выполняются параллельно |

Заключение
`threading`
подходит для ввода-вывода (запросы, файлы).
`multiprocessing` ускоряет вычисления.
`asyncio`
идеально подходит для сетевых программ.

Какой метод ты используешь чаще? Пиши в комментариях!

#python #многопоточность #асинхронность