下面的代码重现了我在当前实现的算法中遇到的问题:
import numpy.random as rand
import time
x = rand.normal(size=(300,50000))
y = rand.normal(size=(300,50000))
for i in range(1000):
t0 = time.time()
y *= x
print "%.4f" % (time.time()-t0)
y /= y.max() #to prevent overflows
问题是,经过一些迭代后,事情开始逐渐变慢,直到一次迭代花费的时间是最初的数倍。
放缓的情节
Python 进程的 CPU 使用率始终稳定在 17-18% 左右。
我在用着:
- Python 2.7.4 32位版本;
- 带有 MKL 的 Numpy 1.7.1;
- 视窗 8。