2013-03-10 112 views
0

我正在使用The Grinder,并且我有一个Python脚本,它执行一些Java API来收集最小值,最大值,执行次数和总执行次数(后者2得到平均值执行时间)。这是为每个API(它是一个多维数组)和每个线程完成的。Python:限制数组中元素的数量

#Contents of apiTimingsList array: [min, max, number of executions, total execution time] 
apiTimingsList = [[9999,0,0,0] for j in range(len(apiList))] 

我正在调查一些内存问题,我认为这个数组的增长大小可能是一个问题。随着测试的进行,它会不断增长。例如,如果我有10个API,并且正在运行900个线程,那么只要测试运行,就会有9000个阵列保持增长。

有没有办法限制这些数组的大小,只说保留最后的x个执行次数,这样我的计算仍然有效,但数组不会失控?

+0

见http://stackoverflow.com/questions/5537618/memory-errors-and-list-limits-in-python – user1929959 2013-03-10 23:16:58

回答

3

您可以使用collections.deque

>>> from collections import deque 
>>> d = deque(maxlen=2) 
>>> d.append(3) 
>>> d.append(4) 
>>> d.append(5) 
>>> d 
    deque([4, 5], maxlen=2) 
+0

谢谢你 - 这样的事情看起来像它会做的伎俩。 – Matt 2013-03-11 13:05:20

1

来自collections模块的可能会完成你想要的。