我正在慢慢地转向Python,我想做一个简单的测试来比较简单数组求和的性能。我生成一个随机的1000x1000数组,并在这个数组中的每个值上加一个。在
这里是我用Python编写的脚本:
import time
import numpy
from numpy.random import random
def testAddOne(data):
"""
Test addOne
"""
return data + 1
i = 1000
data = random((i,i))
start = time.clock()
for x in xrange(1000):
testAddOne(data)
stop = time.clock()
print stop - start
以及我在MATLAB中的功能:
^{pr2}$Python需要2.77-2.79秒,与MATLAB函数相同(实际上Numpy给我留下了很深的印象!)。要使用多线程处理,我需要对Python脚本进行哪些更改?我不能用MATLAB,因为我没有工具箱。在
Python中的Multi线程只在线程被阻塞的情况下有用,例如在获取输入时,这里不是这种情况(有关更多详细信息,请参阅this question的答案)。然而,多处理在Python中很容易实现。多处理一般包括here。在
下面是一个与您的示例类似的程序
下面是一个使用pool of worker processes将1连续添加到不同矩阵的更有用的示例。在
^{pr2}$在本例中,
testAddN
中的代码实际上对调用testAddOne
的结果做了一些事情。您可以取消对print语句的注释,以检查是否正在执行一些有用的工作。在在这两种情况下,我都将添加的总数量更改为10000;添加的数量越少,启动流程的成本就越大(但是您可以尝试参数)。你也可以用
num_processes
做实验。在我的机器上,我发现与num_processes=1
在同一个进程中运行相比,我得到了2倍的加速,产生了四个带有num_processes=4
的进程。在相关问题 更多 >
编程相关推荐