我是多处理的新手,当我运行这个简单的例子时,我很惊讶。在
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同时计算多个值。是几个过程的产生真的很费时,还是其他什么?有没有其他方法可以用来加速对大型数组的计算?在
目前没有回答
相关问题 更多 >
编程相关推荐