我想計算'流行'的時間。 這裏是代碼。從空列表中彈出
x=list(range(10000))
popz=timeit.Timer("x.pop(0)","from __main__ import x")
print (popz.timeit())
IndexError: pop from empty list
我怎樣才能從列表的開始得到彈出的時間。
我想計算'流行'的時間。 這裏是代碼。從空列表中彈出
x=list(range(10000))
popz=timeit.Timer("x.pop(0)","from __main__ import x")
print (popz.timeit())
IndexError: pop from empty list
我怎樣才能從列表的開始得到彈出的時間。
默認情況下,timeit
method運行一百萬次。但是,您的列表只有10000個項目。所以當timeit
運行時,第一個10000
次會高興地彈出,但迭代將失敗。你可以明確設置的次數:
popz.timeit(n=10000)
,但...這是因爲要花費的時間.pop
多長時間,但你的列表的大小是不斷變化的一個真正棘手的定時情況。如果你正在尋找漸近性能,你可能會驗證.pop(0)
具有O(N)的漸近性能。然而,具體的時間將很難得到,因爲您必須花費時間來創建列表以及.pop
,或您的列表在您計時時不斷變化。這些都不是理想的。但是我想這是與試圖時間非冪等方法的問題...
嘗試像這樣
>>> import timeit
>>> x=list(range(10000))
>>> timeit.timeit("x.pop(0)","from __main__ import x", number=len(x))
0.01635134604293853
謝謝,它的工作原理。 –
也許ü可以嘗試用兩個變量之間的不同(日期時間),你在pop之前和之後定義。
我不確定,但也許是它的方式) 但有一個錯誤,它等於第二個變量賦值(在「pop」之後)的時間。
import datetime
a = datetime.datetime.now()
# ...wait a while...
b = datetime.datetime.now()
print(b-a)
那麼,我不確定在這種情況下timedelta的準確性。
謝謝,也許這種情況的準確性取決於許多問題,如pc的工作量。我也不確定。 –
謝謝!明白了! –