Basics of Python and Django. / Асинхронное программирование. / Асинхронное программирование операторы async await.
Асинхронное программирование операторы async await.
Асинхронное выполнение это когда одна функция может вызываться много раз для одновременного выполнения.
При этом последующий вызов не дожидается окончания работы предыдущего.
Функции работают паралельно, последовательно передавая управление друг другу.
Рассмотрим пример.
import time
one = [1,2,3,4,5,6]
two = []
print('one = ', one)
print('two = ', two)
def move():
print('Moving')
time.sleep(1)
item = one.pop()
two.append(item)
while len(one) != 0:
move()
print('one = ', one)
print('two = ', two)
Асинхронный вариант.
import time
import asyncio
one = [1,2,3,4,5,6]
two = []
print('one = ', one)
print('two = ', two)
async def move():
item = one.pop()
print('Moving ',item)
two.append(item)
await asyncio.sleep(1)
async def main():
tasks = []
for i in range(0,len(one)):
tasks.append(move())
await asyncio.wait( tasks )
asyncio.run(main())
print('one = ', one)
print('two = ', two)