我搜索使用所有内核的方法。但我所尝试的,只是减少狂欢。
我尝试了以下操作:
from joblib import Parallel, delayed
import multiprocessing
from time import time
import numpy as np
inputs = range(1000)
def processInput(i):
return i * i
使用多处理
num_cores = multiprocessing.cpu_count()
start=time()
results = Parallel(n_jobs=num_cores)(delayed(processInput)(i) for i in inputs)
print 'multiproc time ', time()-start
无需多处理
start=time()
results =[]
for i in inputs:
results.append(processInput(i))
print 'simple time ', time()-start
并获取输出:
multiproc time 0.14687204361
simple time 0.000839948654175
这是多线程/多处理的经典问题。每当你想要并行处理某些东西时,你应该确保由于并行性而节省的时间大于管理并行进程所需的时间。
尝试增加输入大小。然后,您将看到并行性的影响。