为了澄清这个问题的原因:
使用两个具有相同名称的模块会令人困惑。它们代表什么使它们与众不同?
什么任务可以一个人解决而另一个人不能解决,反之亦然?
为了澄清这个问题的原因:
使用两个具有相同名称的模块会令人困惑。它们代表什么使它们与众不同?
什么任务可以一个人解决而另一个人不能解决,反之亦然?
该asyncio
文档涵盖了差异:
班级
asyncio.Future(*, loop=None)
这个类几乎与
concurrent.futures.Future
.差异:
result()
并且exception()
在未来尚未完成时不要使用超时参数并引发异常。- 注册的回调
add_done_callback()
总是通过事件循环的call_soon_threadsafe()
.- 该类与包中的
wait()
andas_completed()
函数不兼容concurrent.futures
。这个类不是线程安全的。
基本上,如果您使用ThreadPoolExecutor
or ProcessPoolExecutor
,或者想Future
直接使用 a 来进行基于线程或基于进程的并发,请使用concurrent.futures.Future
. 如果您正在使用asyncio
,请使用asyncio.Future
。
从文档:
[
asyncio
提供了一个 Future 类,它模仿 concurrent.futures 模块中的类,但适用于事件循环;