thisの投稿に続いて、私はWindows 7(Enterprise、64ビット、および64ビット)でPythonのtime.sleep Python 3.4.4を参照してください)。ここでPython 3.xおよびWindows 7で不正確なtime.sleep()
が基準の.pyスクリプトです:this例1として
import threading, time
def Return():
return
def Setup():
for _ in range(10):
time_before = time.time()
Return()
wait_delay = -time.time()
delays = []
InputFrequency = 60
while (time.time() - time_before) < (1/InputFrequency):
time.sleep(0)
wait_delay += time.time()
delays.append(wait_delay)
print("Output frequency: " + str([1/t for t in delays][0]) + " Hz")
threading.Thread(target=Setup).start()
、このスクリプトは、おおよそ60Hzの出力周波数を生成する必要があります。 9.15Hz
入力:20Hzの - 出力: - :
入力:出力10Hzの私のWindows 7 Enterpriseマシン上で実行した場合しかし、これらは、私は与えられた入力周波数に対して受信出力周波数である16.03 Hzの
入力:30Hzを - 出力21.37Hz
入力範囲:40Hzの - 6 4Hzの - 出力:32.05Hz
入力範囲:65Hz - 10kHzのの+ - 出力:64.10Hz
ここで何が起こっていますか?入力周波数が変動する(40Hz以上)のが同じ出力周波数を生成するのはなぜですか?入力周波数が10,000Hzを超える場合でも、出力周波数の上限は64.10Hzですか?私はそれが〜60Hzでtime.sleep()解決の問題だとは思わない。 ideone.comスクリプトに供給される同じ入力周波数値は、予想される出力周波数を生成するので、それは自分のコンピュータに関連していなければなりません。
現在のPythonのバージョンに違いがあるかどうかチェックしましたか? – pvg
私はしませんでしたが、私はPython 2.7.12のインストールをチェックしましたが、同じ誤った出力周波数を与えています。 – jars121
そうですが、ベースラインはpython 3ですので、python 3.6が起動する場所になるかもしれません。 – pvg