Sobes.tech
Junior — Middle

Կարո՞ղ է Python-ում միաժամանակ մի քանի առաջադրանք կատարել մեկ հոսքում:

sobes.tech AI

Պատասխան AI-ից

Python-ում, մեկ հոսքում, հնարավոր է միաժամանակ կատարել մի քանի առաջադրանք՝ օգտագործելով ասինխրոն ծրագրավորում (asyncio) կամ գեներատորներ, որոնք թույլ են տալիս անցնել առաջադրանքների միջև առանց նոր հոսքեր ստեղծելու։ Սակայն, CPython-ի ստանդարտ իրականացման GIL (Global Interpreter Lock) պատճառով, միաժամանակյա Python կոդը կատարող մի քանի հոսքերի իրականացումը սահմանափակ է՝ միայն մեկ հոսք է կատարվում յուրաքանչյուր ժամանակ։

Օրինակ՝ asyncio-ի հետ մեկ հոսքում առաջադրանքների միաժամանակյա կատարում՝

import asyncio

async def առաջադրանք(անուն, ուշացում):
    await asyncio.sleep(ուշացում)
    print(f"Արաջադրանք {անուն} ավարտվեց")

async def main():
    await asyncio.gather(
        առաջադրանք('A', 1),
        առաջադրանք('B', 2),
        առաջադրանք('C', 1.5)
    )

asyncio.run(main())

Այսպիսով, մի քանի առաջադրանք կարող են կատարվել «համաժամանակ» մեկ հոսքում՝ սպասման ժամանակի վրա հիմնված անցումով, բայց ոչ միաժամանակ՝ բազմահոսքային աշխատանքի իմաստով։