Sobes.tech
Назад к вопросам
Junior — Middle
66

Можешь перечислить виды параллельного и конкурентного программирования, реализуемые в Python?

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

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

sobes.tech AI

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

  1. Многопоточность (threading) — позволяет запускать несколько потоков внутри одного процесса. Из-за GIL (Global Interpreter Lock) в CPython потоки не могут одновременно выполнять байт-код, но подходят для задач с вводом-выводом.

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

  3. Асинхронное программирование (asyncio) — основано на событийном цикле и корутинах, позволяет писать конкурентный код без потоков и процессов, эффективно для IO-bound задач.

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

Пример использования 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 say_hello():
    print('Hello')
    await asyncio.sleep(1)
    print('World')

asyncio.run(say_hello())