我正在使用 Joblib 在我的 Python 应用程序中运行并行作业。在分析过程中,我注意到最慢的过程是
{built-in method time.sleep}
。有趣的是,当我删除 Joblib 并行处理时,这个问题就消失了。您能解释一下为什么{内置方法 time.sleep} 成为 Joblib 并行处理的瓶颈吗?
这是我的代码的简化版本:
from joblib import Parallel, delayed
def my_function(x):
# Some computation
return x * x
results = Parallel(n_jobs=2)(delayed(my_function)(i) for i in range(10))
分析输出
ncalls tottime percall cumtime percall filename:lineno(function)
17153 209.317 0.012 209.317 0.012 {built-in method time.sleep}
588 0.835 0.001 0.835 0.001 {method 'poll' of 'select.poll' objects}
大概是因为您正在分析的父进程正在等待正在执行工作的子进程准备好,并且正在使用
time.sleep()
来完成此操作。