从这里的文档https://pythonhosted.org/joblib/parallel.html#parallel-reference-documentation
我不清楚batch_size
和{
让我们考虑一下使用'multiprocessing'
后端、2个作业(2个进程)并且需要计算10个任务的情况。在
据我所知:
batch_size
-一次控制pickle任务的数量,因此如果设置batch_size = 5
-joblib将pickle并立即向每个进程发送5个任务,到达那里后,它们将按进程顺序逐个解决。使用batch_size=1
时,joblib将一次pickle并发送一个任务,当且仅当该进程完成上一个任务时。在
为了表达我的意思:
def solve_one_task(task):
# Solves one task at a time
....
return result
def solve_list(list_of_tasks):
# Solves batch of tasks sequentially
return [solve_one_task(task) for task in list_of_tasks]
所以这个代码:
^{pr2}$等于此代码(性能):
slices = [(0,5)(5,10)]
Parallel(n_jobs=2, backend = 'multiprocessing', batch_size=1)(
delayed(solve_list)(tasks[slice[0]:slice[1]]) for slice in slices)
我说得对吗?那么pre_dispatch
是什么意思呢?在
事实证明,我是对的,两段代码在性能上非常相似,因此
batch_size
的工作方式与我所预期的一致。pre_dispatch(如文档状态)控制任务队列中实例化任务的数量。在输出:
^{pr2}$相关问题 更多 >
编程相关推荐