CPU(NCore)数量的增加会对多处理池产生负面影响

2024-06-17 12:25:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码,我想将任务分散到多个进程中。经过实验,我意识到增加CPU内核的数量会对执行时间产生负面影响

我的机器上有8个磁芯

  • 情况1:不使用多处理

    • 执行时间:106分钟
  • 案例2:使用ncores=4进行多处理

    • 执行时间:37分钟
  • 情况3:使用ncores=7进行多处理

    • 执行时间:40分钟

以下代码:

import time
import multiprocessing as mp


def _fun(i, args1=10):

    #Sort matrix W

    #For loop 1 on matrix M
    #For loop 2 on matrix Y

    return value

def run1(ncores=mp.cpu_count()):
    ncores = ncores - 4 # use 4 and 1 to have ncores = 4 and 7
    _f = functools.partial(_fun,args1=x)
    with mp.Pool(ncores) as pool:
        result = pool.map(_f, range(n))
    return [t for t in result] 


start = time.time()
list1= run1() 
end = time.time()
print( 'time {0} minutes '.format((end - start)/60))

我的问题是,使用多处理的最佳实践是什么?据我所知,我们使用cpu核的越多,速度就越快