如何在 python 中捕获 Joblib/并行异常?

sud*_*nym 3 exception-handling try-catch python-multithreading joblib python-multiprocessing

我有一个joblib's的用例Parallel, delayed。我已经包含了一些在某些条件下终止工人的功能。然而,当我这样做,我随机产生JoblibWebdriverExceptionMultiprocessing exceptionJoblibURLerror,或只error

令我高兴的是,我在docs 中没有找到关于如何(定义?)/捕获异常的任何部分。

当我做:

    try:
       Parallel(delayed(function))
    except (JoblibWebdriverException | error | 'Multiprocessing exception'): 
    # written with separate excepts in original code
       log_errors()
Run Code Online (Sandbox Code Playgroud)

我屈服,name JoblibWebdriverException not defined然后是:

---------
Sub-process traceback
---------
Multiprocessing exception:
(trace stack)
Run Code Online (Sandbox Code Playgroud)

在python中使用Parallel时如何捕获未定义的joblib异常?

Uwa*_*bal 5

我建议使用concurrent.Futures它对异常处理有强大的支持。joblib由于多处理的设置方式,无法从子进程向主线程引发异常而臭名昭著。

  • 您能为这个问题提供替代解决方案吗?我无法取代 joblib,因为它在 sklearn 生态系统中根深蒂固。 (5认同)