Async await

import asyncio


async def fetch_data():
    print("Start fetching data...")
    await asyncio.sleep(5)  # Імітація мережевого запиту
    print("Data fetched!")
    return {"data": "Sample data"}

async def process_data():
    print("Start processing data...")
    await asyncio.sleep(6)  # Імітація обробки даних
    print("Data processed!")
    return {"processed_data": "Processed sample data"}

async def main():
    # Запускаємо fetch_data та process_data одночасно
    fetch_task = asyncio.create_task(fetch_data())
    process_task = asyncio.create_task(process_data())


    print("Something else can be done here...") #не асинхронний виклик
    for i in range(10):
        print(i)
        await asyncio.sleep(1)

    # Чекаємо завершення обох задач (тут де await - блокується)
    data = await fetch_task
    processed_data = await process_task



    print(f"Fetched data: {data}")
    print(f"Processed data: {processed_data}")

# Запуск головної функції
asyncio.run(main())
Something else can be done here...
0
Start fetching data...
Start processing data...
1
2
3
4
Data fetched!
5
Data processed!
6
7
8
9
Fetched data: {'data': 'Sample data'}
Processed data: {'processed_data': 'Processed sample data'}

Process finished with exit code 0