2 回答

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊
你的期望是錯(cuò)誤的。如果要測(cè)量代碼平均時(shí)間消耗,請(qǐng)使用timeit模塊。它多次執(zhí)行您的代碼并在一段時(shí)間內(nèi)取平均值。
您的代碼具有不同運(yùn)行時(shí)的原因在于您的代碼:
time.sleep(1) # ensures (3.5+) _at least_ 1000ms are waited, won't be less, might be more
你在一個(gè)緊密的循環(huán)中調(diào)用它,導(dǎo)致累積差異:
在給定的秒數(shù)內(nèi)暫停執(zhí)行調(diào)用線程。該參數(shù)可以是一個(gè)浮點(diǎn)數(shù),以指示更精確的睡眠時(shí)間。實(shí)際的掛起時(shí)間可能少于請(qǐng)求的時(shí)間,因?yàn)槿魏尾东@的信號(hào)都會(huì)在執(zhí)行該信號(hào)的捕獲例程后終止 sleep()。此外,由于系統(tǒng)中其他活動(dòng)的調(diào)度,暫停時(shí)間可能比請(qǐng)求的時(shí)間長(zhǎng)任意量。
在 3.5 版更改:即使睡眠被信號(hào)中斷,該函數(shù)現(xiàn)在至少睡眠 sec,除非信號(hào)處理程序引發(fā)異常(有關(guān)基本原理,請(qǐng)參見 PEP 475)。
強(qiáng)調(diào)我的。

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊
由于系統(tǒng)的調(diào)度,在每次循環(huán)迭代中執(zhí)行代碼不會(huì)花費(fèi)相同的時(shí)間(系統(tǒng)會(huì)暫停您的進(jìn)程以執(zhí)行另一個(gè)進(jìn)程然后返回它......)。
添加回答
舉報(bào)