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 ApplyResult
s,但没有定义它们。
这似乎也适用于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 的文档在哪里?的主要内容,如果未能解决你的问题,请参考以下文章