Junior — Middle
Кои методи са реализирани в Python за изпълнение на задачи паралелно или конкурентно?
sobes.tech AI
Отговор от AI
В Python се използват различни подходи и библиотеки за изпълнение на задачи паралелно или конкурентно:
-
Модул
threading— за създаване на нишки (threads). Подходящ за задачи с много входно-изходни операции, но не ускорява CPU-bound задачи заради GIL. -
Модул
multiprocessing— за създаване на процеси. Позволява заобикаляне на GIL и ефективно използване на няколко ядра на CPU. -
Модул
asyncio— за асинхронно програмиране с използване на корутини. Добър за голям брой операции с входно-изходни операции. -
Библиотеки от висок ниво:
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.