49

为了澄清这个问题的原因:

  1. 使用两个具有相同名称的模块会令人困惑。它们代表什么使它们与众不同?

  2. 什么任务可以一个人解决而另一个人不能解决,反之亦然?

4

2 回答 2

23

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

于 2015-04-27T18:36:27.540 回答
4

文档

[asyncio提供了一个 Future 类,它模仿 concurrent.futures 模块中的类,但适用于事件循环;

于 2015-04-27T18:12:44.713 回答