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