![](/img/trans.png)
[英]Python Asyncio is not running new coroutine using asyncio.run_coroutine_threadsafe
[英]Python asyncio difference between loop.create_task and asyncio.run_coroutine_threadsafe
從事件線程外部將協程推送到事件線程的pythonic方法是什么?
更新信息:
從 Python 3.7 開始, 添加了高級函數asyncio.create_task(coro)
並且可以用來代替asyncio.ensure_future
和loop.create_task
來創建任務。
Python 文檔將asyncio.create_task(coro)
稱為“創建新任務的首選方式”。
原答案:
需要明確的是:通常 asyncio 在單線程中運行。 並發不是由線程提供的,而是通過使用單個事件循環來運行不同的協程。
如果你想提交並發運行的協程而不等待它的結果,你應該使用asyncio.ensure_future
創建任務(與create_task
不同)。
但是,如果您的應用程序使用多個線程,並且您希望將從一個線程運行的協程提交到在另一個線程中運行的事件循環,您應該使用run_coroutine_threadsafe
。 這是在另一個線程中運行事件循環並從主線程向 in 提交協程的好例子。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.