Python 使用 asyncio 時出現 RuntimeError: This event loop is already running 的解決方法

2020-10-07 13:00:31

如下圖,在使用 asyncio 呼叫事件迴圈 loop 時出現錯誤 RuntimeError: This event loop is already running

import asyncio

async def execute(x):
   print('Number:', x)
  
coroutine = execute(1)
print('Coroutine:', coroutine)

print('After calling execute')
loop = asyncio.get_event_loop()
loop.run_until_complete(coroutine)

print('After calling loop')

執行程式時出現錯誤 RuntimeError: This event loop is already running

在這裡插入圖片描述

查閱資料後,發現所使用的 Python 編輯器為 Spyder,其連線著 IPython 核心,而 IPython 核心本身在事件迴圈上執行,而 asyncio 不允許巢狀其事件​​迴圈,因此會出現如上圖的錯誤資訊。

切換到 Pycharm 編輯器即可解決問題:

在這裡插入圖片描述