我以前使用过joblib和airflow,没有遇到过这个问题。我正在尝试通过气流运行作业,该气流使用joblib运行并行计算。当气流作业启动时,我看到以下警告
UserWarning: Loky-backed parallel loops cannot be called in a multiprocessing, setting n_jobs=1
将警告追溯到源代码,我在lokybackend类的joblib包中看到以下函数触发(multiprocessingbackend类中也有类似的逻辑)
def effective_n_jobs(self, n_jobs):
"""Determine the number of jobs which are going to run in parallel"""
if n_jobs == 0:
raise ValueError('n_jobs == 0 in Parallel has no meaning')
elif mp is None or n_jobs is None:
# multiprocessing is not available or disabled, fallback
# to sequential mode
return 1
elif mp.current_process().daemon:
# Daemonic processes cannot have children
if n_jobs != 1:
warnings.warn(
'Loky-backed parallel loops cannot be called in a'
' multiprocessing, setting n_jobs=1',
stacklevel=3)
return 1
问题是我以前在joblib和airflow中运行过类似的函数,但没有触发此条件设置 n_jobs
等于1。想知道这是否是某种类型的版本控制问题(使用airflow 2.x和joblib 1.x),或者airflow中是否有可以解决此问题的设置。我查看了joblib的旧版本,甚至降级到了joblib 0.4.0,但这并没有解决任何问题。由于api、数据库连接等方面的差异,我更不愿意降级气流。
暂无答案!
目前还没有任何答案,快来回答吧!