2013-03-10 113 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模塊的可能會完成你想要的。