Python

Vadnica za Python Asyncio

Vadnica za Python Asyncio
Knjižnica Asyncio je predstavljena v python 3.4 za izvajanje hkratnih enojnih programov. Ta knjižnica je priljubljena kot druge knjižnice in okviri zaradi izjemne hitrosti in raznolike uporabe. Ta knjižnica se v pythonu uporablja za ustvarjanje, izvajanje in strukturiranje podprogramov in sočasno obdelavo več nalog, ne da bi opravil naloge vzporedno. Glavni deli te knjižnice so opredeljeni spodaj:

Koreutina: Del kode, ki ga je mogoče zaustaviti in nadaljevati v večnitnem skriptu, se imenuje koroutina. podprogrami sodelujejo v večnitnem programu. Ko se ena podprogram ustavi, se lahko izvede druga podprogram.

Zanka dogodka: Uporablja se za začetek izvajanja podprogramov in obdelavo vhodno / izhodnih operacij. Potrebno je več nalog in jih dokončajte.

Naloga: Izvedba in rezultat podprogramov so opredeljeni v nalogah. Z knjižnico asyncio lahko dodelite več število nalog in jih asinhrono zaženete.

Prihodnost: Deluje kot prihodnje skladišče, kamor se bodo po koncu shranjevali rezultati podprogramov. To je koristno, kadar katera koli podprogram zahteva, da počaka na rezultat druge podprograme.

Kako lahko uporabite zgornje koncepte knjižnice asyncio, je prikazano v tej vadnici z nekaj preprostimi primeri.

Primer-1: Ustvarite posamezno podprogram z eno samo nalogo

Ustvarite datoteko z imenom async1.py in dodajte naslednjo kodo. knjižnica asyncio je uvožena za uporabo funkcij te knjižnice. dodajte funkcija je določena za izračun vsote določenega obsega števil. Obseg številk od 1 do 101 opravilo dodeli z eno sekundo zakasnitve. Zanka dogodkov je razglašena, da se bo izvajala, dokler ne bodo končane vse naloge glavne metode. Po izračunu vrednosti bo funkcija počakala eno sekundo in natisnila rezultat.

uvoz asyncio
async def add (začetek, konec, čakanje):
#Initializirajte spremenljivko vsote
vsota = 0
# Izračunaj vsoto vseh števil
za n v območju (začetek, konec):
vsota + = n
# Počakajte določene sekunde
čakam asyncio.spi (počakaj)
# Natisnite rezultat
print (f'Sum od start do end je sum ')
async def main ():
# Dodelite eno nalogo
naloga = zanka.create_task (dodaj (1.101,1))
# Nalogo zaženite asinhrono
čakam asyncio.počakaj ([naloga])
če je __name__ == '__main__':
#Declare zanka dogodka
zanka = asyncio.get_event_loop ()
# Zaženite kodo, dokler ne dokončate vse naloge
zanko.run_until_complete (main ())
#Zaprite zanko
zanko.zapri ()

Izhod:

$ python3 async1.py

Rezultat prikazuje vsoto od 1 do 101, kar je 5050.

Primer-2: Ustvarite več podprogramov

Uporaba asyncio knjižnice bo odstranjena, ko boste hkrati izvajali več korogutin. Ustvarite novo datoteko z imenom async2.py in dodajte naslednjo kodo. Ustvarijo se tri naloge s tremi različnimi obsegi in čakalnimi vrednostmi v glavni () metoda. Prva naloga bo izračunala vsoto od 5 do 500000 s čakanjem 3 sekunde, druga naloga bo izračunala vsoto od 2 do 300000 s čakanjem 2 sekundi in tretja naloga bo izračunala vsoto od 10 do 1000 s čakanjem 1 sekundo. Naloga z nizkimi čakalnimi vrednostmi bo končana najprej, naloga z visoko čakalno vrednostjo pa končno.

uvoz asyncio
async def add (začetek, konec, čakanje):
#Initializirajte spremenljivko vsote
vsota = 0
# Izračunaj vsoto vseh števil
za n v območju (začetek, konec):
vsota + = n
# Počakajte določene sekunde
čakam asyncio.spi (počakaj)
# Natisnite rezultat
print (f'Sum od start do end je sum ')
async def main ():
# Dodeli prvo nalogo
task1 = zanka.create_task (dodaj (5,500000,3))
# Dodeli drugo nalogo
task2 = zanka.create_task (dodaj (2.300.000,2))
# Dodeli tretjo nalogo
task3 = zanka.create_task (dodaj (10,1000,1))
# Naloge zaženite asinhrono
čakam asyncio.počakajte ([naloga1, naloga2, naloga3])
če je __name__ == '__main__':
#Declare zanka dogodka
zanka = asyncio.get_event_loop ()
# Zaženite kodo, dokler ne dokončate vse naloge
zanko.run_until_complete (main ())
#Zaprite zanko
zanko.zapri ()

Izhod:

$ python3 async1.py

Izhod kaže, da je naloga3 najprej končana, ker je bila čakalna doba te naloge samo 1 sekunda, naloga1 pa končana zadnja, ker je bila čakalna doba te naloge 3 sekunde.

Primer-3: podprogrami s prihodnostjo

Ta primer prikazuje uporabo prihodnjega predmeta knjižnice asyncio. Ustvarite novo datoteko z imenom async3.py in dodajte naslednjo kodo. V tem primeru sta za prihodnost dodeljeni dve nalogi. show_message Tu je razglašena funkcija za tiskanje sporočila pred izvajanjem podprograma in po zaključku izvedbe. Prva naloga bo počakala 2 sekundi, končala pa se bo zadnja. Druga naloga bo počakala 1 sekundo in bo končana prva.

uvoz asyncio
async def show_message (število, čakanje):
# Natisnite sporočilo
tiskanje (f'Task številka se izvaja ')
# Počakajte določene sekunde
čakam asyncio.spi (počakaj)
natisni (f'Naloga številka je končana ')
async def stop_after (kdaj):
čakam asyncio.spanje (kdaj)
zanko.stop ()
async def main ():
# Dodeli prvo nalogo
task1 = asyncio.zagotoviti_future (show_message (1,2))
natisni ('Razpored 1')
# Dodeli drugo nalogo
task2 = asyncio.zagotoviti_prihodnost (show_message (2,1))
natisni ('Razpored 2')
# Naloge zaženite asinhrono
čakam asyncio.počakajte ([naloga1, naloga2])
če je __name__ == '__main__':
#Declare zanka dogodka
zanka = asyncio.get_event_loop ()
# Zaženite kodo glavne metode, dokler ne dokončate vse naloge
zanko.run_until_complete (main ())

Izhod:

$ python3 async3.py

V izhodnih podatkih je prikazano, da se naloga1 najprej zažene in konča zadnja, naloga2 pa se zažene pozneje, vendar dokončana najprej za kratek čas.

Zaključek

Tukaj je razložen osnovni koncept asinhronega programiranja z uporabo asyncio knjižnice pythona. Upam, da boste lahko po vadbi primerov te vadnice v python napisali večnitno kodo.

5 najboljših arkadnih iger za Linux
Dandanes so računalniki resni stroji, ki se uporabljajo za igre na srečo. Če ne boste mogli dobiti novega visokega rezultata, boste vedeli, kaj mislim...
Bitka za Wesnoth 1.13.6 Razvoj izdan
Bitka za Wesnoth 1.13.6, ki je izšel prejšnji mesec, je šesta razvojna izdaja v 1.13.x series in prinaša številne izboljšave, predvsem uporabniški vme...
Kako namestiti League Of Legends na Ubuntu 14.04
Če ste ljubitelj League of Legends, je to priložnost, da preizkusite League of Legends. Upoštevajte, da LOL podpira PlayOnLinux, če uporabljate Linux....