Python

Výukový program pre Python Asyncio

Výukový program pre Python Asyncio
Knižnica Asyncio je uvedená v pythone 3.4 na vykonávanie súbežných programov s jedným vláknom. Táto knižnica je obľúbená ako iné knižnice a rámce pre svoju pôsobivú rýchlosť a rôzne použitie. Táto knižnica sa používa v pythone na vytváranie, vykonávanie a štruktúrovanie rutín a na zvládanie viacerých úloh súčasne bez toho, aby sa úlohy robili paralelne. Hlavné časti tejto knižnice sú definované nižšie:

Rutina: Časť kódu, ktorú je možné pozastaviť a obnoviť v skripte s viacerými vláknami, sa nazýva coroutine. korutíny spolupracujú vo viacvláknovom programe. Keď sa jeden program zastaví, potom sa môže vykonať druhý program.

Slučka udalosti: Používa sa na spustenie vykonávania korutín a na spracovanie vstupno-výstupných operácií. Trvá to viac úloh a splníte ich.

Úloha: Vykonanie a výsledok korutín sú definované úlohami. Pomocou knižnice asyncio môžete priradiť viac úloh a úlohy môžete spúšťať asynchrónne.

Budúcnosť: Funguje ako budúce úložisko, kde sa po dokončení budú ukladať výsledky korutín. Je to užitočné, keď ktorýkoľvek korutín vyžaduje počkať na výsledok iného korutínu.

Ako môžete implementovať vyššie uvedené koncepty knižnice asyncio, je v tomto výučbe ukázané na niekoľkých jednoduchých príkladoch.

Príklad-1: Vytvorte jeden korutín s jedinou úlohou

Vytvorte súbor s názvom async1.py a pridajte nasledujúci kód. knižnica asyncio sa importuje, aby mohla využívať funkcie tejto knižnice. pridať funkcia je deklarovaná na výpočet súčtu určitého rozsahu čísel. Rozsah čísel od 1 do 101 je úlohe pridelený s oneskorením jednej sekundy. Smyčka udalostí je deklarovaná tak, že bude prebiehať, kým nebudú splnené všetky úlohy hlavnej metódy. Po výpočte hodnoty bude funkcia čakať jednu sekundu a vytlačí výsledok.

importovať asyncio
async def add (štart, koniec, čakanie):
# Inicializovať premennú súčet
súčet = 0
#Vypočítajte súčet všetkých čísel
pre n v rozsahu (začiatok, koniec):
suma + = n
# Počkajte pridelené sekundy
čakať asyncio.spať (čakať)
#Vytlačte výsledok
print (f'Sum od start do end je sum ')
async def main ():
# Priraďte jednu úlohu
úloha = slučka.create_task (add (1,101,1))
# Spustite úlohu asynchrónne
čakať asyncio.počkaj ([úloha])
ak __name__ == '__main__':
# Deklarovať slučku udalostí
slučka = asyncio.get_event_loop ()
# Spustite kód, kým nedokončíte všetky úlohy
slučka.run_until_complete (main ())
# Zatvorte slučku
slučka.Zavrieť()

Výkon:

$ python3 async1.py

Na výstupe je súčet 1 až 101, čo je 5050.

Príklad 2: Vytvorenie viacerých korutín

Používanie knižnice asyncio sa vymaže, keď budete súčasne spúšťať viac korún. Vytvorte nový súbor s názvom async2.py a pridajte nasledujúci kód. Vygenerujú sa tri úlohy s tromi rôznymi rozsahmi a čakajúcimi hodnotami v hlavný() metóda. Prvá úloha vypočíta súčet od 5 do 500000 počkaním 3 sekúnd, druhá úloha vypočíta súčet od 2 do 300000 čakaním 2 sekundy a tretia úloha spočíta súčet od 10 do 1000 čakaním 1 sekundu. Úloha s nízkymi čakajúcimi hodnotami sa najskôr dokončí a úloha s vysokou čakajúcou hodnotou sa dokončí nakoniec.

importovať asyncio
async def add (štart, koniec, čakanie):
# Inicializovať premennú súčet
súčet = 0
#Vypočítajte súčet všetkých čísel
pre n v rozsahu (začiatok, koniec):
suma + = n
# Počkajte pridelené sekundy
čakať asyncio.spať (čakať)
#Vytlačte výsledok
print (f'Sum od start do end je sum ')
async def main ():
# Priradiť prvú úlohu
task1 = slučka.create_task (pridať (5 500 000,3))
# Priraďte druhú úlohu
task2 = slučka.create_task (pridať (2 300 000,2))
# Priraďte tretiu úlohu
task3 = slučka.create_task (add (10,1000,1))
#Synchronne spustite úlohy
čakať asyncio.čakať ([task1, task2, task3])
ak __name__ == '__main__':
# Deklarovať slučku udalostí
slučka = asyncio.get_event_loop ()
# Spustite kód, kým nedokončíte všetky úlohy
slučka.run_until_complete (main ())
# Zatvorte slučku
slučka.Zavrieť()

Výkon:

$ python3 async1.py

Výstup ukazuje, že úloha3 je dokončená ako prvá, pretože čakacia doba tejto úlohy bola iba 1 sekunda a úloha1 je dokončená ako posledná, pretože čakacia doba tejto úlohy bola 3 sekundy.

Príklad 3: korutíny s budúcnosťou

Tento príklad ukazuje použitie budúceho objektu asyncio knižnice. Vytvorte nový súbor s názvom async3.py a pridajte nasledujúci kód. V tomto príklade sú pre budúcnosť priradené dve úlohy. show_message je tu deklarovaná funkcia na vytlačenie správy pred vykonaním korutínu a po dokončení vykonania. Prvá úloha počká na 2 sekundy a bude dokončená posledná. Druhá úloha počká 1 sekundu a najskôr sa dokončí.

importovať asyncio
async def show_message (číslo, počkajte):
# Vytlačte správu
print (f'Task number is running ')
# Počkajte pridelené sekundy
čakať asyncio.spať (čakať)
print (f'Task number is Complete ')
async def stop_after (keď):
čakať asyncio.spánok (kedy)
slučka.stop ()
async def main ():
# Priradiť prvú úlohu
task1 = asyncio.zabezpečiť_futúra (show_message (1,2))
tlač („Príloha 1“)
# Priraďte druhú úlohu
task2 = asyncio.zabezpečiť_futúra (show_message (2,1))
tlač („Príloha 2“)
#Synchronne spustite úlohy
čakať asyncio.čakať ([task1, task2])
ak __name__ == '__main__':
# Deklarovať slučku udalostí
slučka = asyncio.get_event_loop ()
# Spustite kód hlavnej metódy, kým nedokončíte všetky úlohy
slučka.run_until_complete (main ())

Výkon:

$ python3 async3.py

Na výstupe sa zobrazuje, že úloha1 je spustená ako prvá a je dokončená ako posledná a úloha2 je spustená neskôr, ale je dokončená ako prvá pre krátku čakaciu dobu.

Záver

Tu je vysvetlený základný koncept asynchrónneho programovania pomocou asyncio knižnice pythonu. Dúfam, že po precvičení príkladov tohto tutoriálu budete môcť v Pythone písať viacvláknový kód.

Hry Výukový program Battle for Wesnoth
Výukový program Battle for Wesnoth
Battle for Wesnoth je jednou z najpopulárnejších open source strategických hier, ktoré si v súčasnosti môžete zahrať. Táto hra bola nielen vyvinutá ve...
Hry 0 A.D. Výukový program
0 A.D. Výukový program
Z mnohých strategických hier je tu 0 A.D. dokáže vyniknúť ako komplexný titul a veľmi hlboká, taktická hra napriek tomu, že je otvoreným zdrojom. Vývo...
Hry Výukový program pre Unity3D
Výukový program pre Unity3D
Úvod do Unity 3D Unity 3D je výkonný nástroj na vývoj hier. Je to multiplatforma, ktorá vám umožňuje vytvárať hry pre mobilné telefóny, web, počítače ...