Я не могу заставить joblib увидеть функцию Cython, которую я определяю, и не знаю почему.
Вот пример минимального кода в блокноте Google Colab.
Пример минимального кода:
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: не удалось удалить сериализацию задачи. Пожалуйста, убедитесь, что все аргументы функции доступны для выбора.
У меня возникает та же проблема за пределами jupyter / i python при сборке модуля с помощью setup.py