12

在 Python文档中,我看到:

concurrent.futures.Future... ...除测试外,不应直接创建。

我想在我的代码中使用它作为一个承诺,我很惊讶不建议这样使用它。

我的用例:
我有一个线程来读取来自套接字的数据包,并且我有许多回调,这些回调取决于数据包中包含的一些信息。数据包是对消费者请求的响应,所有消费者使用单一连接。每个消费者都会收到一个 Promise 并向其添加一些处理程序,这些处理程序在响应到达时被调用。

所以我不能Executor在这里使用子类,因为我只有一个线程,但我需要创建许多 Futures(承诺)。

Promise 是一种非常普遍的编程技术,我认为这Future是 Python 的 Promise 实现。但是如果不建议像promise那样使用,那么pythonistas常用的有哪些呢?

笔记

我使用 Python 2.7向后移植concurrent.futures到 2.7

4

1 回答 1

8

使用它来将非承诺 API 包装到承诺中是非常好的。Future

通常不应该创建它的原因是因为大多数时候人们直接创建期货,这是因为他们正在执行延迟反模式并将执行者创建的未来包装在另一个未来中。

值得一提的是,这个未来的实现非常弱,它类似于 Java 的旧未来,承诺给你的酷东西就像链式链接一样消失了。值得一提的是,像 JavaScript 这样的语言从 Python 的 Twisted 中得到了他们的承诺,它有更好的实现,即使它与其他东西交织在一起。

于 2014-11-10T08:58:58.280 回答