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