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())
Այսպիսով, մի քանի առաջադրանք կարող են կատարվել «համաժամանակ» մեկ հոսքում՝ սպասման ժամանակի վրա հիմնված անցումով, բայց ոչ միաժամանակ՝ բազմահոսքային աշխատանքի իմաստով։