对于multiprocessing.pool.ApplyResult
,有一些非常严格的API文档(读作: ZERO )。多处理说明doc讲述关于 ApplyResult
s,但没有定义它们。
同样似乎适用于multiprocessing.pool.Pool
,尽管Python多处理指南似乎更好地涵盖了它。
即使ApplyResult
help()
结果也很微不足道:
| get(self, timeout=None)
|
| ready(self)
|
| successful(self)
|
| wait(self, timeout=None)
Get()
和Ready()
我明白了。那些都很好。
我完全不知道wait()
是什么,因为你是
处理一个" pool",人们会认为这会等你
get()
来电。这是"等待结果,但现在不能得到它"还是OS风格的等待?如果是这样,甚至意味着什么?
我同样不确定successful()
是什么。
答案 0 :(得分:8)
您在文档中出现故障的权利:该类实际上记录为AsyncResult,而不是ApplyResult。这两个是同一类的不同名称:
>>> multiprocessing.pool.ApplyResult is multiprocessing.pool.AsyncResult
True
该名称可能在某些时候已被更改,并且文档未经过一致更新,但所有内容都已记录在案,并且只是在错误的名称下进行了记录。 (a closed bug有人指出文档提到了AsyncResult,但该类实际上称为ApplyResult,因此他们将AsyncResult添加为别名。)
答案 1 :(得分:0)
这是我从代码中看到的:
while read line
do
helper_function line
done < FileA
helper_function(){
awk -F, '$2==line {print $0}' FileB
... need to implement more...
}
:如果“线程”运行的任务准备好返回结果,则返回true ready()
:等待超时单位的结果(以浮点秒为单位)并在成功完成时返回结果。在超时时会引发get(timeout=None)
,在未成功完成时会引发相关的异常。TimeoutError
:等待工作人员“线程”设置的条件变量,按照wait(timeout=None)
不明白 收获孩子“线程”。threading.Condition.wait([timeout])
:如果success()
,如果ready
的结果为值,则返回True
。否则,返回get()
(即结果将是例外)。如果启用了断言,则在未准备好时将断言。此函数可用于避免抛出异常。