R并行后端:当一个进程遇到异常时会发生什么?
R parallel backend: What happens when one process faces an exception?
我正在使用 foreach
+ %dopar%
来实现多核并行。我知道有些任务会面临异常。发生异常时:
- 剩下的已经并行启动的任务还能完成吗?
- 未安排的任务(我不知道这是不是正确的术语)是否会安排并最终完成?如果是这样,它仍然能够利用所有核心吗?
我试图寻找这方面的资源,但找不到任何资源。看起来我使用了错误的关键字。如果你有任何资源,请告诉我他们。
foreach
中有一个名为 .errorhandling
的参数,它的值可能为 stop
(默认)、remove
或 pass
。他们的行为是这样的:
stop
: 将停止该功能。
remove
: 不返回此特定任务的结果。
pass
: 错误对象将包含在结果中。
所以解决你的具体问题,如果你有很多任务 运行 并行并且一个工作人员中的一个任务引发了异常,那么它将停止进程并将传递到下一个任务 "scheduled"(这是因为默认值 stop
)。另一个任务将继续正常并行。
请参阅 this answer,它更好地解释了如何处理 foreach
和 %dopar%
中的错误。
我希望这会澄清你的问题。
我正在使用 foreach
+ %dopar%
来实现多核并行。我知道有些任务会面临异常。发生异常时:
- 剩下的已经并行启动的任务还能完成吗?
- 未安排的任务(我不知道这是不是正确的术语)是否会安排并最终完成?如果是这样,它仍然能够利用所有核心吗?
我试图寻找这方面的资源,但找不到任何资源。看起来我使用了错误的关键字。如果你有任何资源,请告诉我他们。
foreach
中有一个名为 .errorhandling
的参数,它的值可能为 stop
(默认)、remove
或 pass
。他们的行为是这样的:
stop
: 将停止该功能。remove
: 不返回此特定任务的结果。pass
: 错误对象将包含在结果中。
所以解决你的具体问题,如果你有很多任务 运行 并行并且一个工作人员中的一个任务引发了异常,那么它将停止进程并将传递到下一个任务 "scheduled"(这是因为默认值 stop
)。另一个任务将继续正常并行。
请参阅 this answer,它更好地解释了如何处理 foreach
和 %dopar%
中的错误。
我希望这会澄清你的问题。