【问题标题】:Joblib, Parallel and batch_sizeJoblib、Parallel 和 batch_size
【发布时间】:2019-03-20 09:18:20
【问题描述】:

假设我有一个大小为 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)

如果我想一次处理 20,000 个项目/或者我希望一个线程/cpu 将 20,000 个项目作为单个任务处理,您能否告诉我 batch_size 和 pre_dispatch 的正确值是多少?

【问题讨论】:

    标签: parallel-processing joblib batchsize


    【解决方案1】:

    要在单个 CPU 上处理 20000 个项目,batch_size=20000。

    Predispatch 默认发送到 2CPU-s。在保持CPU-s忙碌的逻辑中,大概应该是2batch_size,所以pre_dispatch=40000。设置 pre_dispatch='all' 也很诱人,但是如果任务在时间上大致相等,那么它会起作用。 2*batch_size,避免一个CPU空闲,如果时间/任务有很大差异。

    根据我自己的经验,如果每个操作都快,最好有一个更高的batch_size,以减少I/O。

    【讨论】:

      猜你喜欢
      • 2016-02-16
      • 1970-01-01
      • 2022-07-08
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多