Sobes.tech
Junior — Middle

Python-да асинхрондылық 3.6 нұсқасынан бұрын, async def құрылымының пайда болуынан бұрын қалай жүзеге асырылды?

sobes.tech AI

AI-дан жауап

Python 3.5-тен бастап async def құрылымы енгізілгенге дейін және 3.6-нұсқадағы жетілдірулерге дейін, асинхронды бағдарламалау asyncio модулі арқылы жүзеге асырылды, ол генераторларға негізделген корутиндерді пайдаланды. async def орнына yield from кілтсөзімен генераторлар қолданылды, олар орындалуды тоқтатып, қайта жалғастыру үшін.

Негізгі ұпайлар:

  • Корутиндер әдеттегі генераторлар ретінде yield немесе yield from арқылы жарияланды.
  • Оқиғалар циклін іске қосу үшін asyncio.get_event_loop() және run_until_complete() сияқты әдістер қолданылды.
  • Асинхронды күтуді жүзеге асыру үшін await орнына yield from қолданылды.

async/await қолданылмай тұрып корутиннің мысалы:

import asyncio

def hello():
    print('Hello')
    yield from asyncio.sleep(1)
    print('World')

loop = asyncio.get_event_loop()
loop.run_until_complete(hello())
loop.close()

Қазіргі нұсқаларда код оқылуы оңайырақ болды, себебі async def және await енгізілді.