當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。