asyncio.run_coroutine_threadsafe 和 run_in_executor 是一對反義詞。
asyncio.run_coroutine_threadsafe 是在非異步的上下文環境(也就是正常的同步語法的函數里面)下調用異步函數對象(協程),
因為當前函數定義沒有被async修飾,就不能在函數里面使用await,必須使用這。這個是將asyncio包的future對象轉化返回一個concurrent.futures包的future對象。
run_in_executor 是在異步環境(被async修飾的異步函數)里面,調用同步函數,將函數放到線程池運行防止阻塞整個事件循環的其他任務。
這個是將 一個concurrent.futures包的future對象 轉化為 asyncio包的future對象,
asyncio包的future對象是一個asyncio包的awaitable對象,所以可以被await,concurrent.futures.Future對象不能被await。