Korutiin: Koodiosa, mida saab peatada ja jätkata mitmekeermelises skriptis, nimetatakse koroutiiniks. korutiinid töötavad koostöös mitmekülgsete programmidega. Kui üks korutiin teeb pausi, saab teine korutiin käivitada.
Sündmuse silmus: Seda kasutatakse korutiinide käivitamise alustamiseks ja sisend- / väljundoperatsioonide haldamiseks. See võtab mitu ülesannet ja nende täitmise.
Ülesanne: Korutiinide teostamine ja tulemus on määratletud ülesannetega. Asyncio teegi abil saate määrata mitu ülesannet ja käivitada ülesandeid asünkroonselt.
Tulevik: See toimib tulevase salvestusruumina, kuhu korutiinide tulemus pärast valmimist salvestub. See on kasulik, kui mis tahes korutiin nõuab muu korutiini tulemuse ootamist.
Kuidas saate ülaltoodud asyncio teegi mõisteid rakendada, on selles õpetuses näidatud mõned lihtsad näited.
Näide 1: looge ühe ülesandega üks korutiin
Looge fail nimega asünkroon1.py ja lisage järgmine kood. asyncio teek imporditakse selle teegi funktsioonide kasutamiseks. lisama funktsioon deklareeritakse konkreetse arvude vahemiku summa arvutamiseks. Numbrivahemiku 1 kuni 101 määrab ülesanne ühe sekundilise viivitusega. Sündmuse silmus on deklareeritud, et see töötab seni, kuni kõik peamise meetodi ülesanded on lõpule viidud. Pärast väärtuse arvutamist ootab funktsioon ühe sekundi ja prindib tulemuse.
impordi asyncioasync def add (algus, lõpp, oot):
# Initsialiseerige muutuja
summa = 0
# Arvutage kõigi arvude summa
n vahemikus (algus, lõpp):
summa + = n
# Oodake määratud sekundeid
ootama asyncio.magama (ootama)
#Prindi tulemus
print (f'Sum vahemikus algus kuni lõpp on summa ')
async def main ():
# Määrake üks ülesanne
ülesanne = silmus.create_task (lisa (1 101,1))
# Käivita ülesanne asünkroonselt
ootama asyncio.oota ([ülesanne])
kui __nimi__ == '__main__':
#Deklareeri sündmuse silmus
silmus = asyncio.get_event_loop ()
# Käivitage kood kuni kogu ülesande täitmiseni
silmus.run_until_complete (main ())
#Sulgege silmus
silmus.Sulge()
Väljund:
$ python3 async1.pyVäljund näitab summa 1 kuni 101, mis on 5050.
Näide 2: looge mitu korutiini
Asyncio teegi kasutamine kustutatakse, kui käivitate korraga mitu korutiini. Looge uus nimega fail asünkroon2.py ja lisage järgmine kood. Luuakse kolm ülesannet kolme erineva vahemiku ja ooteväärtusega peamine () meetod. Esimene ülesanne arvutab summa vahemikus 5 kuni 500000, oodates 3 sekundit, teine ülesanne arvutab summa vahemikus 2 kuni 300000, oodates 2 sekundit ja kolmas ülesanne arvutab summa vahemikus 10 kuni 1000, oodates 1 sekundit. Madala ooteväärtusega ülesanne saab algul lõpule ja kõrge ooteväärtusega ülesanne lõpuks.
impordi asyncioasync def add (algus, lõpp, oot):
# Initsialiseeri muutuja
summa = 0
# Arvutage kõigi arvude summa
n vahemikus (algus, lõpp):
summa + = n
# Oodake määratud sekundeid
ootama asyncio.magama (ootama)
#Prindi tulemus
print (f'Sum algusest lõpuni on summa ')
async def main ():
#Määra esimene ülesanne
task1 = silmus.create_task (lisa (5 500 000 3))
#Määra teine ülesanne
task2 = silmus.create_task (lisa (2,300000,2))
# Määra kolmas ülesanne
task3 = silmus.create_task (lisa (10,1000,1))
# Käivitage ülesanded asünkroonselt
ootama asyncio.oota ([ülesanne1, ülesanne2, ülesanne3])
kui __nimi__ == '__main__':
#Deklareeri sündmuse silmus
silmus = asyncio.get_event_loop ()
# Käivitage kood kuni kogu ülesande täitmiseni
silmus.run_until_complete (main ())
#Sulgege silmus
silmus.Sulge()
Väljund:
$ python3 async1.pyVäljund näitab, et ülesanne3 on esimene, kuna selle ülesande ooteaeg oli vaid 1 sekund ja ülesanne1 on viimane, kuna selle ülesande ooteaeg oli 3 sekundit.
Näide 3: korutiinid tulevikuga
See näide näitab asyncio teegi tulevase objekti kasutamist. Looge uus nimega fail asünkroon3.py ja lisage järgmine kood. Selles näites on tulevikuks määratud kaks ülesannet. näita_sõnum Funktsioon on siin deklareeritud sõnumi printimiseks enne korutiini käivitamist ja pärast täitmise lõpetamist. Esimene ülesanne ootab 2 sekundit ja lõpeb viimasena. Teine ülesanne ootab 1 sekundit ja täidab kõigepealt.
impordi asyncioasync def show_message (arv, oota):
#Prindi sõnum
print (f 'Ülesanne number töötab')
# Oodake määratud sekundeid
ootama asyncio.magama (ootama)
print (f'ülesanne number on lõpetatud ')
async def stop_after (millal):
ootama asyncio.magama (kui)
silmus.peatus ()
async def main ():
#Määra esimene ülesanne
task1 = asünkroos.tagada_tulevik (näita_sõnumit (1,2))
print ('Graafik 1')
#Määra teine ülesanne
task2 = asyncio.tagada_tulevik (näita_sõnumit (2,1))
print ('Graafik 2')
# Käivitage ülesanded asünkroonselt
ootama asyncio.oota ([ülesanne1, ülesanne2])
kui __nimi__ == '__main__':
#Deklareeri sündmuse silmus
silmus = asyncio.get_event_loop ()
# Käivitage põhimeetodi kood kuni kogu ülesande täitmiseni
silmus.run_until_complete (main ())
Väljund:
$ python3 async3.pyVäljundis on näidatud, et ülesanne1 käivitatakse kõigepealt ja lõpetatakse viimasena ning ülesanne2 käivitatakse hiljem, kuid täidetakse kõigepealt lühikese ooteaja jaoks.
Järeldus
Asünkroonse programmeerimise põhimõistet, kasutades Pythoni asyncio teeki, selgitatakse siin. Loodetavasti saate pärast selle õpetuse näidete harjutamist kirjutada Pythonis mitmekeermelise koodi.