Sobes.tech
Junior — Middle

Кадом усулҳо дар Python барои иҷрои вазифаҳо ба таври параллел ё рақобатӣ татбиқ шудаанд?

sobes.tech AI

Ҷавоб аз AI

Дар Python, ба истифодаи усулҳо ва китобхонаҳои гуногун барои иҷрои вазифаҳо дар параллел ё ҳамзамон истифода мешавад:

  1. Модул threading — барои эҷоди сӯроғҳо (threads). Барои вазифаҳои бо бисёр вуруд ва баромад мувофиқ аст, аммо ба сабаби GIL суръатбахшии вазифаҳои CPU-bound намедиҳад.

  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.