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