Асинхронное программирование.

Основы Python и 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)