multiprocessing.pool.ApplyResult 的文档在哪里?

Posted

技术标签:

【中文标题】multiprocessing.pool.ApplyResult 的文档在哪里?【英文标题】:Where is documentation for multiprocessing.pool.ApplyResult? 【发布时间】:2017-04-08 00:30:25 【问题描述】:

对于multiprocessing.pool.ApplyResult,几乎没有严格的 API 文档(阅读:ZERO)。多处理解释文档 about ApplyResults,但没有定义它们。

这似乎也适用于multiprocessing.pool.Pool,尽管 Python 多处理指南似乎更好地涵盖了它。

即使ApplyResult help() 的结果也是微不足道的:

 |  get(self, timeout=None)
 |  
 |  ready(self)
 |  
 |  successful(self)
 |  
 |  wait(self, timeout=None)

Get()Ready() 我明白了。这些都很好。

我完全不知道wait() 是干什么用的,因为你是 处理一个“池”,人们会认为它会在等你 get() 电话。这是“等待结果,但现在不明白”还是操作系统式的等待?如果是这样,那这意味着什么

我同样不确定successful() 的含义。

【问题讨论】:

【参考方案1】:

您说得对,文档中有一个小故障:该类实际上记录为 AsyncResult,而不是 ApplyResult。两者是同一类的不同名称:

>>> multiprocessing.pool.ApplyResult is multiprocessing.pool.AsyncResult
True

名称可能在某些时候已更改,并且文档并未持续更新,但所有内容都已记录在案,只是记录在错误的名称下。 (a closed bug 有人指出文档中提到了 AsyncResult 但该类实际上称为 ApplyResult,因此他们添加了 AsyncResult 作为别名。)

【讨论】:

文档位于:docs.python.org/2/library/…【参考方案2】:

这是我从代码中看到的:

ready():如果“线程”运行的任务准备好返回结果,则返回 true get(timeout=None):等待超时单位的结果(以浮点秒为单位)并在成功完成时返回结果。超时引发TimeoutError,不成功完成引发相关异常。 wait(timeout=None):根据threading.Condition.wait([timeout]) 不暗示收割子“线程”,等待工作线程“线程”设置的条件变量。 successful():如果ready,如果get() 的结果是一个值,则返回True。否则,返回False(即结果将是异常)。如果启用了断言,如果结果未准备好,将引发 ValueError。

【讨论】:

以上是关于multiprocessing.pool.ApplyResult 的文档在哪里?的主要内容,如果未能解决你的问题,请参考以下文章