Sobes.tech
Junior — Middle

Кои методи са реализирани в Python за изпълнение на задачи паралелно или конкурентно?

sobes.tech AI

Отговор от AI

В Python се използват различни подходи и библиотеки за изпълнение на задачи паралелно или конкурентно:

  1. Модул threading — за създаване на нишки (threads). Подходящ за задачи с много входно-изходни операции, но не ускорява CPU-bound задачи заради GIL.

  2. Модул multiprocessing — за създаване на процеси. Позволява заобикаляне на GIL и ефективно използване на няколко ядра на CPU.

  3. Модул asyncio — за асинхронно програмиране с използване на корутини. Добър за голям брой операции с входно-изходни операции.

  4. Библиотеки от висок ниво:

    • concurrent.futures.ThreadPoolExecutor и ProcessPoolExecutor — удобен интерфейс за стартиране на задачи в нишки или процеси.

Пример за използване на concurrent.futures:

from concurrent.futures import ThreadPoolExecutor

def задача(n):
    print(f"Задача {n} се изпълнява")

with ThreadPoolExecutor(max_workers=3) as executor:
    for i in range(5):
        executor.submit(задача, i)

Изборът на метод зависи от типа на задачата: за CPU-bound — multiprocessing, за I/O-bound — threading или asyncio.