当n_jobs> 1时,Joblib看不到cython模块

问题描述 投票:0回答:1

我无法让joblib看到我正在定义的cython函数,并且不确定原因。

Here is the minimal code example in a Google Colab notebook.

最小代码示例:

from joblib import Parallel, delayed

%load_ext Cython

%%cython -a

cimport cython

def myfunc(int a):
  return a+1

with Parallel(n_jobs=1) as parallel:
  test = parallel(delayed(myfunc)(i) for i in range(10))
  print(test)

[1、2、3、4、5、6、7、8、9、10]

with Parallel(n_jobs=2) as parallel:
  test = parallel(delayed(myfunc)(i) for i in range(10))
  print(test)

ModuleNotFoundError:没有名为“ _cython_magic_e890d3cd151f55a5800848bf00284fa3”的模块'''

上述异常是以下异常的直接原因:joblib.externals.loky.process_executor.BrokenProcessPool:任务无法反序列化。请确保该函数的参数都是可拾取的。

使用setup.py构建模块时,在jupyter / ipython之外出现相同的问题

python parallel-processing cython joblib cythonize
1个回答
0
投票

[阅读后,我能找到的最接近答案的是问题loky。解决方法是使用with parallel_backend('multiprocessing'):

© www.soinside.com 2019 - 2024. All rights reserved.