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

时间:2016-11-23 20:49:45

标签: python python-2.x python-2.6 python-multiprocessing

对于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()是什么。

2 个答案:

答案 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()(即结果将是例外)。如果启用了断言,则在未准备好时将断言。此函数可用于避免抛出异常。