在Python docs中,我看到了:
concurrent.futures.Future
......不应该直接创建 除了测试。
我想在我的代码中使用它作为一个承诺,我很惊讶不建议像这样使用它。
我的用例:
我有一个单线程读取来自套接字的数据包,我有许多回调,根据数据包中包含的一些信息调用。数据包是对消费者请求的响应,所有消费者都使用单一连接。每个使用者都会收到一个promise,并为其添加一些处理程序,这些处理程序在响应到达时会被调用。
所以我不能在这里使用Executor
子类,因为我只有一个线程,但我需要创建许多Futures(promises)。
Promise是非常普遍的编程技术,我认为Future
是Python的承诺实现。但是如果不建议像承诺那样使用它,那么pythonistas通常用于此目的吗?
我使用Python 2.7 backport of concurrent.futures
to 2.7
答案 0 :(得分:8)
完全罚款使用Future
将非承诺API包装到承诺中。
一般 将来
值得一提的是,未来的实施非常弱,它类似于Java的旧时代,很酷的东西承诺会让你像链接一样简单失踪。值得一提的是来自Python的Twisted中的JavaScript doing the deferred anti pattern等语言,它具有更好的实现,即使它与其他东西交织在一起。