为什么python joblib并行处理的速度较慢,所以raan单CPU?

问题描述 投票:0回答:1

我试图理解为什么使用joblib进行并行处理要比单个cpu操作慢?下面是我的代码。

from joblib import Parallel, delayed
import multiprocessing
import time

inputs = range(10000)
def processInput(i):
    return i * i

if __name__ == '__main__':

    num_cores = multiprocessing.cpu_count()
    start_time = time.process_time()
    results = Parallel(n_jobs=num_cores)(delayed(processInput)(i) for i in inputs)
    #print(results)
    print(str(time.process_time() - start_time))

    results=[]
    start_time = time.process_time()
    for i in inputs:
        results.append(processInput(i))
    #print(results)
    print(str(time.process_time() - start_time))

输出:

Time taken parallel: 2.4427331139999997
Time taken single cpu: 0.00196953699999991
python python-3.x joblib
1个回答
0
投票

用于产生进程的开销远高于计算时间。实际上,在这种情况下使用多处理没有任何好处。

如果您更改功能,将开始观察改进。

例如,让我们使用朴素的递归斐波那契函数来更改当前函数。

inputs = range(25, 35)

def processInput(n):
    if n < 2:
        return n
    return processInput(n-2) + processInput(n-1)


Time taken parallel: 0.06956500000000002
Time taken single cpu: 8.295273
© www.soinside.com 2019 - 2024. All rights reserved.