以下のコードはかなり一般的です。最終的な状態では、いくつかの操作 (シリアル ストリームからのデータのサンプリングなど) を実行しますが、現在の私の目標は、ループ構造を最適化してできるだけ速く実行することです。
現在、if ステートメントをトリップする前に最大頻度が 100 ~ 140 になっています。
これを実行するより効率的な方法はありますか?
注: while ループが本質的に空であることはわかっています。もちろん、実行速度の制限要因は、その中で呼び出す関数です。私が保証しようとしているのは、while ループ内のコードが可能な限り効率的に実行されていることです。
import time
frequency = float(raw_input("enter sampling frequency in Hz: "))
zero_time=time.time()
i=0
try:
while True:
sample_start_time=time.time()
print 'sample',i, 'taken at', sample_start_time-zero_time
i+=1
sample_end_time=time.time()
if 1/frequency-(sample_end_time-sample_start_time)<0:
print "sampling frequency is too large...closing"
break
time.sleep(1/frequency-(sample_end_time-sample_start_time))
except KeyboardInterrupt:
pass