Sobes.tech
Назад к вопросам
Senior
7

Назови способы конкурентного выполнения кода в Python

Компании, где спрашивали
Positive TechnologiesPositive Technologies

Ответ от нейросети

sobes.tech AI

В Python есть несколько способов конкурентного выполнения кода:

  1. Потоки (threading) — позволяют запускать несколько потоков в одном процессе. Из-за GIL (Global Interpreter Lock) потоки не дают настоящего параллелизма в CPU-интенсивных задачах, но полезны для I/O-bound операций.

  2. Многопроцессность (multiprocessing) — создает отдельные процессы, каждый со своей памятью и интерпретатором Python, что позволяет обойти GIL и добиться настоящего параллелизма для CPU-интенсивных задач.

  3. Асинхронное программирование (asyncio) — основано на event loop и корутинах, эффективно для большого количества I/O-bound задач без создания потоков или процессов.

  4. Concurrent.futures — высокоуровневый интерфейс для запуска задач в потоках или процессах.

Пример использования multiprocessing:

from multiprocessing import Pool

def f(x):
    return x * x

if __name__ == '__main__':
    with Pool(4) as p:
        print(p.map(f, [1, 2, 3, 4]))

Пример с asyncio:

import asyncio

async def main():
    print('Hello')
    await asyncio.sleep(1)
    print('World')

asyncio.run(main())