2010年10月03日 星期日 02:19
今天调试发现一个内存管理的问题,简述代码如下:
allocated = [
[0 for i in range(2)], # domains[0]
[0 for i in range(2)], # domains[1]
[0 for i in range(2)], # domains[2]
]
res_cache = [ # 这个里面会append很多数据
[[],[]],
[[],[]],
[[],[]],
]
perc = allocated
grad = allocated
trend = allocated
然后我计算res_cache的均值,一阶,二阶分别给perc,grad和trend,
结果发现它们三个的值都等于trend的值...
不知道这是不是我自己机器的特例,有空去看看python的内存共享再来结贴。
最后,我把他们都分别初始化就ok了。
2010年10月03日 星期日 07:05
数组运算推荐使用NumPy。
然后对于你的问题,
allocated和perc, grad, trend其实都是同一个列表, 使用id(allocated), id(prec)等即可查询它们的内存地址。
如果修改你的程序的话可以这么做:
def allocate():
return [[0]*2,[0]*2,[0]*2]
perc = allocate()
...
Zeuux © 2024
京ICP备05028076号