簡體   English   中英

Python asyncio loop.create_task 和 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_futureloop.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM