当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python asyncio.run_coroutine_threadsafe用法及代码示例


用法:

asyncio.run_coroutine_threadsafe(coro, loop)

将协程提交给给定的事件循环。线程安全。

返回 concurrent.futures.Future 以等待来自另一个 OS 线程的结果。

此函数旨在从与运行事件循环的操作系统线程不同的操作系统线程中调用。例子:

# Create a coroutine
coro = asyncio.sleep(1, result=3)

# Submit the coroutine to a given loop
future = asyncio.run_coroutine_threadsafe(coro, loop)

# Wait for the result with an optional timeout argument
assert future.result(timeout) == 3

如果协程中出现异常,将通知返回的 Future。也可以用来取消事件循环中的任务:

try:
    result = future.result(timeout)
except concurrent.futures.TimeoutError:
    print('The coroutine took too long, cancelling the task...')
    future.cancel()
except Exception as exc:
    print(f'The coroutine raised an exception: {exc!r}')
else:
    print(f'The coroutine returned: {result!r}')

请参阅文档的并发和多线程部分。

与其他 asyncio 函数不同,此函数需要显式传递 loop 参数。

版本 3.5.1 中的新函数。

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 asyncio.run_coroutine_threadsafe。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。