python—为什么concurrent.futures的“finishing方法”只能由执行器实现和单元测试使用?

vcudknz3  于 2021-09-08  发布在  Java
关注(0)|答案(1)|浏览(176)

文件 concurrent.futures.Future.set_result()
此方法只能由以下人员使用: Executor 实现和单元测试。
这同样适用于以下文件: set_exception()

设置运行或通知取消()。
但是我可以想象使用(在java中过去也使用过) Future 用于(轻微)其他目的的对象。在稍微不同的情况下。在这些情况下,我只想使用未来对象。为什么不鼓励这样做?
为了更清楚一点:我讨论了一个相当复杂的事件序列,它涉及两个不同的调度器和东西,以及一个 Future 对象可用于取消此进程并通知其完成。这一框架不是一个框架 Executor (也不可能是这样)。

zynd9foi

zynd9foi1#

文档中说的是 set_result() 方法,而不是 Future 对象本身,应仅由实现使用。
理由对我来说似乎很明显:未来的结果应该是由未来对象封装的工作的结果,但是工作本身(您希望异步运行的代码)不应该关心它是如何执行的。那么,应该允许谁来定义 result() 方法返回?只有调度和启动任务的框架。
在您的示例中,您可以传递未来的对象、取消它们、检查它们的状态或检索结果(使用 result() ). 这些操作都不需要您使用 set_result() .

相关问题