原来是jupyter本身已经有loop了的原因。
这个在pycharm 命令窗口都可以运行。但是在vscode就不行了。
import asyncio
from threading import Thread
def run_async(awaitable, *args, loop=None, **kwargs):
policy = asyncio.get_event_loop_policy()
policy._loop_factory = asyncio.SelectorEventLoop
if loop is None:
loop = asyncio.new_event_loop()
task = loop.create_task(awaitable(*args, **kwargs))
loop.run_until_complete(task)
return task.result()
def run():
loop = asyncio.new_event_loop()
return run_async(_run, loop=loop)
async def _run():
print ("_run")
await asyncio.sleep(0.1)
if __name__ == '__main__':
run()