MRo*_*lin 3 python concurrency tornado concurrent.futures
如何在 Tornado 应用程序中偶尔使用线程和期货?
我的服务器偶尔需要在单独的线程或进程中运行长时间运行的任务(任务释放 GIL。)我想用 concurrent.futures 执行器来做到这一点
from concurrent.futures import ThreadPoolExecutor
executor = ThreadPoolExecutor(10)
future = executor.submit(func, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
我如何将这个未来整合到 Tornado 事件循环中?理想情况下,这种集成与tornado.gen协程配合得很好。我想从未来让步,而不会阻止它。实现这一目标的最佳方法是什么?
理想情况下,我想从concurrent Future.
我正在寻找一个功能f,使以下成为可能
@gen.coroutine
def my_coroutine(...)
...
future = executor.submit(func, *args, **kwargs)
result = yield f(future)
Run Code Online (Sandbox Code Playgroud)
您根本不需要特殊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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
802 次 |
| 最近记录: |