多处理图所需的时间比串行时间更长



我有2个插座,每20个内核,因此我想加快一些过程。但是多进程总是比串行"方法"慢。有原因吗?我不是这样做的最有效的方法吗?是由于过程之间缺乏通信(管道或队列(吗?

import time
from multiprocessing import Pool
import numpy as np
#Classical approach by serial
startime = time.time()
def f(x):
    return np.sqrt(x)
f(np.arange(1000))
print("---%s seconds ---" % (time.time() - startime))
#Multiprocess test
startime = time.time()
if __name__ == '__main__':
    p = Pool(40)
    test = p.map(np.sqrt,np.arange(1000),chunksize=1)
print("---%s seconds ---" % (time.time() - startime))

----编辑---

与并行我需要2.92秒,在串行中我需要少1秒...

启动过程即使在现代操作系统上也很慢。计算1000平方根是在现代硬件上快速

要收获并行处理的好处,您必须花更多的时间在实际计算上,而不是开始工作。尝试计算更昂贵的东西,例如1000 bcrypt s或慢速,例如击中1000个不同的URL。

使用计算密集型任务,每个过程都会吃100%CPU,没有比CPU核心更多的过程。

相关内容

  • 没有找到相关文章

最新更新