gpt4 book ai didi

python - 将 concurrent.futures 与 Tornado 事件循环一起使用?

转载 作者:行者123 更新时间:2023-11-28 22:41:30 25 4
gpt4 key购买 nike

如何偶尔在 Tornado 应用程序中使用线程和 future ?

我的服务器偶尔需要在单独的线程或进程中运行长时间运行的任务(该任务释放 GIL。)我想用 concurrent.futures 执行器来做到这一点

from concurrent.futures import ThreadPoolExecutor
executor = ThreadPoolExecutor(10)
future = executor.submit(func, *args, **kwargs)

如何将这个 future 整合到 Tornado 事件循环中?理想情况下,这种集成与 tornado.gen 协程配合得很好。我想从 future 中屈服而不阻碍它。实现此目标的最佳方法是什么?

理想情况下,我想从 concurrent Future 中产生。

我正在寻找一个函数 f 使以下成为可能

@gen.coroutine
def my_coroutine(...)
...
future = executor.submit(func, *args, **kwargs)
result = yield f(future)

最佳答案

您根本不需要特殊的 f 函数,只需生成 executor.submit 返回的 Future 即可:

from concurrent.futures import ThreadPoolExecutor
executor = ThreadPoolExecutor(10)

@gen.coroutine
def my_coroutine(...)
...
future = executor.submit(func, *args, **kwargs)
result = yield future

关于python - 将 concurrent.futures 与 Tornado 事件循环一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32567124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com