import asyncio
from concurrent.futures import ThreadPoolExecutor
import textwrap
aio_pool = ThreadPoolExecutor(1)
def init_loop():
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
return loop
aio_loop = aio_pool.submit(init_loop).result()
async def mycoro():
await asyncio.sleep(1)
return 5
result = aio_pool.submit(lambda : aio_loop.run_until_complete(mycoro())).result()
ip = get_ipython()
def asyncio_magic(line, cell):
async_cell = "async def __async_f():\n%s" % textwrap.indent(cell, ' ')
exec(async_cell, ip.user_ns)
f = ip.user_ns['__async_f']
result = aio_pool.submit(lambda : aio_loop.run_until_complete(f())).result()
ip.register_magic_function(asyncio_magic, magic_kind='cell', magic_name='asyncio')