我編寫了一些代碼,以便隨時間從GPIO獲取傳感器讀數。 爲了確保測量結果符合特定的時間,我想知道python是否以恆定的速度迭代(以便迭代之間的差距是恆定的) - 迭代之間的最小時間差是多少。python是否以恆定速度迭代?
如果他們不是,有人可以讓我知道如何使時間間隔不變。 謝謝!
我編寫了一些代碼,以便隨時間從GPIO獲取傳感器讀數。 爲了確保測量結果符合特定的時間,我想知道python是否以恆定的速度迭代(以便迭代之間的差距是恆定的) - 迭代之間的最小時間差是多少。python是否以恆定速度迭代?
如果他們不是,有人可以讓我知道如何使時間間隔不變。 謝謝!
不,Python不會以恆定速度迭代。
Python只是Raspberry PI上的另一個進程,您的操作系統負責將時間分配給CPU(稱爲multi-tasking)。其他進程也獲得分配時間。這意味着Python永遠不會一直運行,任何處理時間都將取決於其他進程在做什麼。
迭代本身也是授權到特定類型;如何生成下一個項目然後變化很大,即使Python被持續訪問CPU迭代仍然會有所不同。無論你在循環體中做什麼都需要時間,除非輸入和輸出總是完全相同,否則幾乎肯定會花費不同的時間來完成這項工作。
而不是嘗試定時循環,在一個循環中用time.time()
或timeit.default_timer
(取決於你需要的精確度,在你的樹莓上它將是相同的函數)測量時間,並基於此來調整你的動作。
檢查這件事:https://docs.python.org/2/library/time.html#time.struct_time – ZdaR 2015-04-01 11:45:42
無論語言如何,您都需要一個實時操作系統來保證速度不變。或者,這取決於您的測量需要多麼可靠,因爲運行在通用操作系統上的程序大部分時間都是恆定的速度,但並不總是也沒有保證。 – nos 2015-04-01 11:49:05