澄清这个问题的原因:
使用两个名称相同的模块令人困惑。它们代表什么使它们与众不同?
可以解决对方无法解决的任务,反之亦然?
答案 0 :(得分:15)
asyncio
documentation涵盖了差异:
班级
asyncio.Future(*, loop=None)
此课程几乎与
concurrent.futures.Future
兼容。的差异:
result()
和exception()
不会采用超时参数,并在未来尚未完成时引发异常。- 通过事件循环
add_done_callback()
始终调用在call_soon_threadsafe()
注册的回调。- 此类与
wait()
包中的as_completed()
和concurrent.futures
函数不兼容。此类不是线程安全的。
基本上,如果您正在使用ThreadPoolExecutor
或ProcessPoolExecutor
,或者想要将Future
直接用于基于线程或基于进程的并发,请使用concurrent.futures.Future
。如果您使用的是asyncio
,请使用asyncio.Future
。
答案 1 :(得分:2)
来自docs:
[
asyncio
提供了一个] Future类,它模仿concurrent.futures模块中的那个,但适用于事件循环;