微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

增加 CPU 数量 (ncores) 对多处理池有负面影响

如何解决增加 CPU 数量 (ncores) 对多处理池有负面影响

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

我的机器上有 8 个内核

  • 案例 1:不使用多处理

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

    • 执行时间:37 分钟
  • 案例 3multiprocessing 使用 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 内核的次数越多,速度就会越快。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。