Parallel processing 作业库、并行和批处理大小

Parallel processing 作业库、并行和批处理大小,parallel-processing,joblib,batchsize,Parallel Processing,Joblib,Batchsize,假设我有一个大小为50000的生成器/列表。我想把它用作: batches = range(0, 50001) Parallel(n_jobs=multiprocessing.cpu_count(), verbose=100, backend="threading", batch_size=?, pre_dispatch=?)(delayed(<function>)(it) for it in batches) batches=范围(0,5000

假设我有一个大小为50000的生成器/列表。我想把它用作:

batches = range(0, 50001)

Parallel(n_jobs=multiprocessing.cpu_count(), verbose=100,
                 backend="threading", batch_size=?, pre_dispatch=?)(delayed(<function>)(it) for it in batches)
batches=范围(0,50001)
并行(n_jobs=multiprocessing.cpu_count(),verbose=100,
backend=“threading”,batch_size=?,pre_dispatch=?)(延迟()(it)用于批处理)

如果我想一次处理20000个项目/或者我想一个线程/cpu作为一个任务处理20000个项目,请告诉我批量大小和预调度的正确值是多少?

要在单个cpu上处理20000个项目,批量大小=20000

Predispatch默认发送至2CPU-s。在保持CPU-s繁忙的逻辑中,可能应该是2batch_size,因此pre_dispatch=40000。设置pre_dispatch='all'也很有诱惑力,但是如果任务在时间上大致相等,那么它就可以工作。2*批量大小,以避免一个CPU空闲,如果时间/任务存在较大差异


根据我自己的经验,如果每个操作都很快,最好使用更大的批处理大小,以减少I/O。

要在单个CPU上处理20000个项目,批处理大小=20000

Predispatch默认发送至2CPU-s。在保持CPU-s繁忙的逻辑中,可能应该是2batch_size,因此pre_dispatch=40000。设置pre_dispatch='all'也很有诱惑力,但是如果任务在时间上大致相等,那么它就可以工作。2*批量大小,以避免一个CPU空闲,如果时间/任务存在较大差异

根据我自己的经验,如果每个操作都很快,那么最好使用更大的批处理大小,以减少I/O