多进程比正常单进程慢

2024-04-20 08:25:09 发布

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

我是多处理的新手,当我运行这个简单的例子时,我很惊讶。在

from multiprocessing import Pool
import numpy as np
import timeit

data = np.linspace(1,100, num=1000000)


def f(x):
    return x*x

start = timeit.default_timer()
if __name__ == '__main__':
    p = Pool(2)
    multi = p.map(f, data)
stop = timeit.default_timer()
print ("Multi: " + str(stop-start))

Nonmulti = np.zeros(len(data))
start = timeit.default_timer()
for i in data:
    Nonmulti[i-1] = f(i)
stop = timeit.default_timer()
print ("Non multi: " + str(stop-start))

通过查看任务管理器,我得到了以下具有不同进程数的数字:

^{pr2}$

所以我认为,多处理将比for循环快,因为池可以使用更多的CPU同时计算多个值。是几个过程的产生真的很费时,还是其他什么?有没有其他方法可以用来加速对大型数组的计算?在


Tags: importdefaultfordatanpmultistartstop