繁体   English   中英

为什么python joblib并行处理比单CPU慢?

[英]Why is python joblib parallel processing slower than single cpu?

我试图理解为什么使用 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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM