【问题标题】:How to I print the number of jobs scheduled by scikit learn?如何打印 scikit learn 安排的作业数量?
【发布时间】:2021-01-23 21:35:38
【问题描述】:

我打算在 AWS 上运行以下代码

from sklearn.metrics import pairwise_distances
pw_distance = pairwise_distances(model_in, model_out, n_jobs=-1)

如何打印使用n_jobs=-1 安排的作业数量? 我知道我可以使用 AWS 检查监控 CPU 使用情况,但我也想要直接读数。

【问题讨论】:

    标签: python scikit-learn parallel-processing joblib


    【解决方案1】:

    像这样:

    from joblib import effective_n_jobs
    print(effective_n_jobs(-1))
    

    pairwise_distances 在后台使用Parallel;如果你愿意,你可以测试它:

    from time import sleep
    from joblib import Parallel, delayed
    Parallel(n_jobs=-1, verbose=10)(delayed(sleep)(.2) for _ in range(10))
    

    输出:

    [Parallel(n_jobs=-1)]: Using backend LokyBackend with 12 concurrent workers.
    [Parallel(n_jobs=-1)]: Done   3 out of  10 | elapsed:    0.6s remaining:    1.3s
    [Parallel(n_jobs=-1)]: Done   5 out of  10 | elapsed:    0.6s remaining:    0.6s
    [Parallel(n_jobs=-1)]: Done   7 out of  10 | elapsed:    0.6s remaining:    0.3s
    [Parallel(n_jobs=-1)]: Done  10 out of  10 | elapsed:    0.6s finished
    

    【讨论】:

    • 感谢您的回复。抱歉,如果这是一个明显的问题,但如果我在 pairwise_distance 之后的行中使用 print(effective_n_jobs(-1)) ,它不会给出 1 因为成对距离并行化已经完成?还是我误解了effective_n_jobs的用法。
    • print(effective_n_jobs(-1)) 计算您拥有的 CPU 数量。 Parallel documentation 声明“如果 n_jobs=-1 使用所有 CPU”。因此,如果将n_jobs 设置为-1,则在运行pairwise_distances 时将使用print(effective_n_jobs(-1)) 返回的所有CPU。如果要打印pairwise_distances 运行时的 CPU 数量,则必须修改pairwise_distancesParallel 的源代码。
    • 哦,我明白了,我们正在调用用于指示 pairwise_distances 的相同函数。感谢您的解决方案和解释!
    猜你喜欢
    • 1970-01-01
    • 2019-11-14
    • 2014-01-31
    • 1970-01-01
    • 2013-09-29
    • 2016-01-07
    • 2014-03-31
    • 2012-07-23
    • 1970-01-01
    相关资源
    最近更新 更多