import asyncio
from contextlib import closing
async def get_some_data():
# Обработка I/O - например, получение данных через HTTP
await asyncio.sleep(2)
data = 'ping'
print(data)
return data
async def process(data):
# Обработка данных на CPU
await asyncio.sleep(1)
print('pong')
async def main():
while True:
data = await get_some_data() # Блокирующий вызов - ожидание поступления новой порции данных
asyncio.ensure_future(process(data)) # Неблокирующий вызов - обработка данных на CPU
if __name__ == "__main__":
with closing(asyncio.get_event_loop()) as event_loop:
event_loop.run_until_complete(main())