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