Bru*_*zen 5 python parallel-processing scikit-learn joblib
这不是一个真正的问题,但我想了解:
if __name__ == '__main__':行添加到脚本后),我看到脚本以4个进程开始,每个进程有10个线程。每个进程使用大约25%的CPU(总计:100%)。似乎按预期工作我的问题:如果库仍然使用所有内核,使用n-jobs(和joblib)有什么意义?我想念什么吗?它是Windows特定的行为吗?
小智 8
文档说:
该参数用于指定与 joblib 并行的例程应使用多少个并发进程或线程。
n_jobs 是一个整数,指定同时运行的工作线程的最大数量。如果给定 1,则根本不使用 joblib 并行性,这对于调试很有用。如果设置为 -1,则使用所有 CPU。对于低于 -1 的 n_jobs,使用 (n_cpus + 1 + n_jobs)。例如,当 n_jobs=-2 时,将使用除 1 个之外的所有 CPU。
n_jobs默认为None,表示未设置;它通常会被解释为 n_jobs=1,除非当前joblib.Parallel后端上下文另有指定。
有关 joblib 的使用及其与 scikit-learn 交互的更多详细信息,请参阅我们的并行性注释。
小智 7
它不会,如果您将 n_jobs 指定为 -1,它将使用所有内核。如果设置为 1 或 2,它将仅使用一或两个内核(在 Linux 下测试完成 scikit-learn 0.20.3)。
| 归档时间: |
|
| 查看次数: |
14982 次 |
| 最近记录: |