Python 如何使并行部件更高效

Python 如何使并行部件更高效,python,machine-learning,scikit-learn,multiprocessing,Python,Machine Learning,Scikit Learn,Multiprocessing,我正在Fedora29上使用Python2.7。我尝试学习(T>=1000)弱分类器,我决定并行学习这些弱分类器,然后在聚合它们的结果之后。在运行代码之后,我看到它们实际上并没有并行运行。我的问题是我如何才能以更有效的方式完成这项任务。在代码中,哪些更改会导致更快的输出 在弱分类器中,我调用此函数进行重采样 这里我训练一个弱分类器 主要 您当然不应该将processs=T传递到Pool。如果系统中的CPU核心数为4,请尝试使用processs=4。顺便问一下,您如何检查培训是否并行运行?您当然不

我正在Fedora29上使用Python2.7。我尝试学习(T>=1000)弱分类器,我决定并行学习这些弱分类器,然后在聚合它们的结果之后。在运行代码之后,我看到它们实际上并没有并行运行。我的问题是我如何才能以更有效的方式完成这项任务。在代码中,哪些更改会导致更快的输出

在弱分类器中,我调用此函数进行重采样 这里我训练一个弱分类器 主要
您当然不应该将
processs=T
传递到
Pool
。如果系统中的CPU核心数为4,请尝试使用
processs=4
。顺便问一下,您如何检查培训是否并行运行?您当然不应该将
processs=T
传递到
Pool
。如果系统中的CPU核心数为4,请尝试使用
processs=4
。顺便问一下,你如何检查训练是否并行进行?
def rand_bootsrap(n, size):
  import datetime
  import random
  random.seed(datetime.datetime.now())
  bootstrap = [random.choice(range(n)) for i in range(size)]
  return np.asarray(bootstrap)
def train_weak_clf(inputs):
  print mp.current_process()
  data_PU, data_P, data_U, train_label, NP, NU, H = inputs
  n_oob = np.zeros(shape=(NP+NU,))
  f_oob = np.zeros(shape=(NP+NU, 2))

  ## Bootstrap resample
  bootstrap_sample_p = rand_bootsrap(NP, H)
  bootstrap_sample_u = rand_bootsrap(NU, H)

  data_bootstrap = np.concatenate((data_P[bootstrap_sample_p, :],              data_U[bootstrap_sample_u, :]), axis=0)

  # Train model
  model = DecisionTreeClassifier(max_depth=None, max_features=None, criterion='gini')
  model.fit(data_bootstrap, train_label)

  ## Index for the out of the bag (oob) samples
  idx_oob = sorted(set(range(NP + NU)) - set(np.unique(bootstrap_sample_p)) - set(np.unique(bootstrap_sample_u + NP))) 
  f_oob[idx_oob] += model.predict_proba(data_PU[idx_oob])
  n_oob[idx_oob] += 1
  return f_oob, n_oob
 if __name__ == '__main__':

   # load data and define value for inputs's element 
   T = 1000
   p = mp.Pool(processes=T)
   inputs = [data_PU, data_P, data_U, train_label, NP, NU, H] 
   result = p.map(train_weak_clf, [inputs for i in range(T)])
   p.close()

   # get the result of 1000 weak learner and aggregate them and compute F1score