2025-09-19

Python aszinkron programozás, async és await kulcsszavak.

 1. Kezdet

import time

def udvozlo():
print('Ez az üdvözlő függvény.')
time.sleep(2)
print("Üdvözlet mindenkinek! (Ez még nem async=aszinkron)")

def beugro():
print('Ez a beugró függvény, lenne.')
time.sleep(1)
print('Amíg az udvozlo() funkció vár, ez a beugro() függvény indulhatna!?')

# Függvény indítások
udvozlo()
beugro()

# Mint látható a beugro() funkció nem indul addig, amíg le nem telik az
# udvozlo() 2 másodperces időzítője. Csak ezután hajtódik végre!

 

2. Aszinkron

import asyncio

async def aszinkron_udvozlo():
print('Ez az aszinkron üdvözlő függvény.')
await asyncio.sleep(2)
print("Helló, aszinkron világ!!")

# Futtatási utasítás
asyncio.run(aszinkron_udvozlo())

# Amíg várakozunk 2 másodpercig, az eseményciklus más
# feladatokat is elvégezhet.
# Például e-maileket ellenőrizhet, vagy dallamot
# játszhat le, stb..
# Így a kódunk nem lenne blokkoló, hanem hatékonyabb!

 

 3. Várakozásban

import asyncio

async def aszinkron_udvozlo():
print('Üdvözlő feladat indítása...')
await asyncio.sleep(2) # 2 másodperces várakozást szimulál
print("Üdvözlünk az aszinkron világban!")

async def kozben_csinalj_valami_mast_is():
print("Bocs egy másodpercre!")
await asyncio.sleep(1) # 1 másodpercig valami mást szimulál
print("Végeztem, mehet az üdvözlés!")

async def main():
# Ütemezze mindkét feladatot egyidejű futtatásra
await asyncio.gather(
aszinkron_udvozlo(),
kozben_csinalj_valami_mast_is(),
)

asyncio.run(main())

# A main() függvényben az
# asyncio.gather() futtatja, az aszinkron_udvozlo()-t és a
# kozben_csinalj_valami_mast_is() egyidőben, egyszerre.

# Ez azt jelenti, hogy amíg a program vár az aszinkron_udvozlo()
# befejezésére a 2 másodperces alvó üzemmódban, addig 1 másodpercben
# elindítja és befejezi a kozben_csinalj_valami_mast_is() funkciót.
# A kódban egy másik feladat is el lesz végezve a várakozási idő alatt.

 

4. Aszinkron Színház

import asyncio

async def rendezo():
print('A rendező szól: - üdvözlök mindenkit, elkezdjük a próbát!')
await asyncio.sleep(3) # 3 másodperces várakozást szimulál
print("Rendező ingerülten: - végre elkezdhetjük a próbát!?")

async def szinesz():
print("Színész: - elnézést az öltözőben maradt a szövegkönyvem!")
await asyncio.sleep(2) # 2 másodpercig valami mást szimulál
print("Színész: - megvan, itt a szöveg.")

async def postas():
print("Postás hangosan: - rendező úr, levele jött!")
await asyncio.sleep(1) # 1 másodpercig valami mást szimulál
print("A postás átadta a levelet: - további szép napot!")

async def main():
await asyncio.gather(
rendezo(),
szinesz(),
postas(),
)

asyncio.run(main())


 Layco  

Nincsenek megjegyzések:

Megjegyzés küldése