JobLib Parallel-设置n_jobs的正确方法

时间:2018-09-25 14:56:10

标签: python parallel-processing joblib

我有一个功能,可以在同一数据集上构建3个不同的模型(10倍cv),并在数组中填充样本外预测(数组的每一列都是给定模型的预测)。由于没有理由按顺序执行此操作,因此我想使用多重处理。

有三个模型可以同时运行,而且每个模型在训练过程中都可以利用多线程。

如何设置Parallel函数的n_jobs?应该是3,因为这是我需要运行的全部,然后将特定模型的每个线程数设置为最大可用/ 3?或将n_jobs设置为-1,这将为每个模型提供对所有资源的完全访问权限?

   def train_models(i):


        for train_index, test_index in kf.split(X.values):

            #create train and validation splits here

            if i == 0:  

            #Train first model type 
    model=model_type_1(....,threads=?)

            if i == 1: 
            #Train second model type    
    model=model_type_2(....,threads=?)

            if i == 2: 
            #Train third model type
    model=model_type_3(....,threads=?)

Parallel(n_jobs=?,verbose =20)(delayed(train_models)(i) for i in range(3))

0 个答案:

没有答案