#!/usr/bin/env python # coding: utf-8 # In[1]: 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') # In[2]: get_ipython().run_cell_magic('asyncio', '', "print('waiting')\nawait asyncio.sleep(1)\nprint('waited')\n")