R并行后端:当一个进程遇到异常时会发生什么?

时间:2018-07-02 14:30:25

标签: r parallel-processing doparallel

我正在使用foreach + %dopar%在多个内核上实现并行性。我知道有些任务将面临例外。发生异常时:

  1. 已经并行启动的其余任务是否仍将完成?
  2. 未计划的任务(我不知道这是否正确)是否会被计划并最终完成?如果是这样,它将仍然能够利用所有核心吗?

我尝试查找有关此资源,但找不到任何资源。看来我使用了错误的关键字。如果您有任何资源,请指导我。

1 个答案:

答案 0 :(得分:2)

foreach中有一个名为.errorhandling的参数,它可以具有stop(默认值),removepass的值。他们的行为是这样的:

  1. stop:该功能将停止。
  2. remove:此特定任务的结果将不会返回。
  3. pass:错误对象将包含在结果中。

因此,针对您的特定问题,如果您有多个并行运行的任务,并且一个工作线程中的一个任务引发了异常,则它将停止该进程并将传递给“计划的”下一个任务(这是因为默认值stop)。其他任务将照常并行进行。

请参阅this answer,该书更好地说明了如何处理foreach%dopar%中的错误。

我希望这可以澄清您的问题。