Python

Урок на Python Asyncio

Урок на Python Asyncio
Библиотеката Asyncio е въведена в python 3.4 за изпълнение на еднонишкови едновременни програми. Тази библиотека е популярна от другите библиотеки и рамки заради впечатляващата си скорост и разнообразно използване. Тази библиотека се използва в python за създаване, изпълнение и структуриране на съпрограми и за обработка на множество задачи едновременно, без да се изпълняват паралелно задачите. Основните части на тази библиотека са дефинирани по-долу:

Програма: Частта от кода, която може да бъде поставена на пауза и възобновена в многонишков скрипт, се нарича съпрограма. съпрограмите работят съвместно в многонишкова програма. Когато една съпрограма прави пауза, тогава друга програма може да се изпълни.

Цикъл на събитие: Използва се за стартиране на изпълнението на съпрограми и обработка на операции по въвеждане / извеждане. Необходими са множество задачи и ги изпълнете.

Задача: Изпълнението и резултатът от съпрограмите се определят от задачите. Можете да зададете няколко броя задачи, като използвате библиотеката asyncio и да ги изпълнявате асинхронно.

Бъдеще: Той действа като бъдещо хранилище, където резултатът от съпрограмите ще се съхранява след завършване. Това е полезно, когато всяка съпрограма изисква да изчака резултата от друга съпрограма.

Как можете да приложите горните концепции за библиотеката asyncio е показано в този урок, като използвате някои прости примери.

Пример-1: Създайте единична програма с една задача

Създайте файл с име async1.py и добавете следния код. asyncio библиотека се импортира, за да използва функциите на тази библиотека. добавете декларирана функция за изчисляване на сумата на определен диапазон от числа. Числовият диапазон от 1 до 101 се задава от задачата с една секунда закъснение. Цикълът на събитията е деклариран, че ще се изпълнява до завършване на всички задачи на основния метод. След изчисляване на стойността, функцията ще изчака една секунда и ще отпечата резултата.

внос asyncio
async def add (start, end, wait):
# Инициализира променлива сума
сума = 0
# Изчислете сумата от всички числа
за n в обхват (начало, край):
сума + = n
# Изчакайте за зададени секунди
изчакайте асинсио.спи (изчакай)
# Отпечатайте резултата
print (f'Sum от start до end е sum ')
async def main ():
# Присвояване на една задача
задача = цикъл.create_task (add (1,101,1))
# Изпълнете задачата асинхронно
изчакайте асинсио.изчакайте ([задача])
ако __name__ == '__main__':
# Декларирайте цикъл на събитие
цикъл = asyncio.get_event_loop ()
# Пуснете кода, докато завършите цялата задача
цикъл.run_until_complete (main ())
# Затворете цикъла
цикъл.близо()

Изход:

$ python3 async1.py

Резултатът показва сумата от 1 до 101, което е 5050.

Пример-2: Създайте множество съпрограми

Използването на библиотеката asyncio ще бъде изчистено, когато едновременно стартирате множество съпрограми. Създайте нов файл с име async2.py и добавете следния код. Генерират се три задачи с три различни диапазона и чакащи стойности в главен () метод. Първата задача ще изчисли сумата от 5 до 500000, като изчака 3 секунди, втората задача ще изчисли сумата от 2 до 300000, като изчака 2 секунди, а третата задача ще изчисли сумата от 10 до 1000, като изчака 1 секунда. Задачата с ниски стойности на изчакване ще завърши първо, а задачата с висока стойност на изчакване ще завърши най-накрая.

внос asyncio
async def add (start, end, wait):
# Инициализира променлива сума
сума = 0
# Изчислете сумата от всички числа
за n в обхват (начало, край):
сума + = n
# Изчакайте за зададени секунди
изчакайте асинсио.спи (изчакай)
# Отпечатайте резултата
print (f'Sum от start до end е sum ')
async def main ():
# Възлагане на първа задача
task1 = цикъл.create_task (добавяне (5,500000,3))
# Възлагане на втора задача
task2 = цикъл.create_task (добавяне (2 300 000, 2))
# Възлагане на трета задача
task3 = цикъл.create_task (добавяне (10,1000,1))
# Изпълнете задачите асинхронно
изчакайте асинсио.изчакайте ([задача1, задача2, задача3])
ако __name__ == '__main__':
# Декларирайте цикъл на събитие
цикъл = asyncio.get_event_loop ()
# Пуснете кода, докато завършите цялата задача
цикъл.run_until_complete (main ())
# Затворете цикъла
цикъл.близо()

Изход:

$ python3 async1.py

Резултатът показва, че task3 е завършен първи, защото времето за изчакване на тази задача е било само 1 секунда, а task1 е завършено последно, тъй като времето за изчакване на тази задача е 3 секунди.

Пример-3: съпрограми с бъдеще

Този пример показва използването на бъдещ обект на библиотеката asyncio. Създайте нов файл с име async3.py и добавете следния код. В този пример са зададени две задачи за бъдеще. show_message функцията е декларирана тук, за да отпечата съобщението преди изпълнение на съпрограмата и след завършване на изпълнението. Първата задача ще изчака 2 секунди, а завърши последната. Втората задача ще изчака 1 секунда и ще изпълни първата.

внос asyncio
async def show_message (номер, изчакайте):
# Отпечатайте съобщението
print (f'Task номер работи ')
# Изчакайте за зададени секунди
изчакайте асинсио.спи (изчакай)
print (f'Task номер е завършен ')
async def stop_after (когато):
изчакайте асинсио.сън (кога)
цикъл.Спри се()
async def main ():
# Възлагане на първа задача
task1 = asyncio.осигури бъдещето (show_message (1,2))
print ('График 1')
# Възлагане на втора задача
task2 = asyncio.осигури бъдещето (show_message (2,1))
печат („График 2“)
# Изпълнете задачите асинхронно
изчакайте асинсио.изчакайте ([задача1, задача2])
ако __name__ == '__main__':
# Декларирайте цикъл на събитие
цикъл = asyncio.get_event_loop ()
# Изпълнете кода на основния метод, докато завършите цялата задача
цикъл.run_until_complete (main ())

Изход:

$ python3 async3.py

В изхода е показано, че task1 се стартира първо и завършва последно, а task2 се стартира по-късно, но се изпълнява първо за кратко време.

Заключение

Основната концепция за асинхронно програмиране с помощта на asyncio библиотека на python е обяснена тук. Надявам се, че ще можете да напишете многонишков код в python, след като отработите примерите от този урок.

Как да обърнете посоката на превъртане на мишката и тъчпада в Windows 10
Мишка и Тъчпадs не само правят изчисленията лесни, но и по-ефективни и отнемат по-малко време. Не можем да си представим живот без тези устройства, но...
Как да промените курсора на мишката и размера на курсора, цвета и схемата в Windows 10
Показалецът на мишката и курсорът в Windows 10 са много важни аспекти на операционната система. Това може да се каже и за други операционни системи, т...
Безплатни и игри с отворен код за разработване на Linux игри
Тази статия ще обхване списък с безплатни двигатели за игри с отворен код, които могат да се използват за разработване на 2D и 3D игри на Linux. Същес...