Junior — Middle
Кадом усулҳо дар Python барои иҷрои вазифаҳо ба таври параллел ё рақобатӣ татбиқ шудаанд?
sobes.tech AI
Ҷавоб аз AI
Дар Python, ба истифодаи усулҳо ва китобхонаҳои гуногун барои иҷрои вазифаҳо дар параллел ё ҳамзамон истифода мешавад:
-
Модул
threading— барои эҷоди сӯроғҳо (threads). Барои вазифаҳои бо бисёр вуруд ва баромад мувофиқ аст, аммо ба сабаби GIL суръатбахшии вазифаҳои CPU-bound намедиҳад. -
Модул
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.