0

背景色を変更するコマンドを送信したり、サウンドを再生したりしてから、timeit を使用してこれらのイベントが実際に発生するまでの遅延を把握する必要があります (私は Windows、Python 2.73 を使用し
ています)。背景色を変更するか、サウンドを再生する前に、(time.clock() を使用して) 時間を記録します。次に、被験者がキーを押すと、もう一度時間を記録し、差をとって反応時間を見つけます。
サウンドの再生については、次のようにしました。

import timeit
t = timeit.Timer(stmt = "winsound.PlaySound('C:\WINDOWS\media\Windows XP Error.wav', winsound.SND_FILENAME)",setup = "import winsound")
n = t.timeit(number = 100) 
print n/100 -0.999  

0.999 は、Windows XP の Error.wavの継続時間 (秒) です。
これにより、56msのようなものが得られました。それが合理的かどうか、それが正しい方法であるかどうか、ガベージコレクションを有効にする必要があるかどうかはわかりませんか?


背景の変更については、さらに問題があります。フルスクリーン モードでテストを行っているため、これらすべてをセットアップ パラメータに入れようとしました。

from Tkinter import Tk
root=Tk()
root.overrideredirect(True)
root.geometry("{0}x{1}+0+0".format(root.winfo_screenwidth(),root.winfo_screenheight()))
root.mainloop()

それらをすべて ; で区切りますが、まだ構文エラーが発生します。全画面表示ではなくウィンドウを実際に開いてみると
setup = 'from Tkinter import Tk; root=Tk(); root.mainloop()'、何も起こらず、閉じると他のエラーが表示されます。Invalid command name "."
私が実際に測定しているステートメントは ですroot.configure(background='red')

4

1 に答える 1

1

で使用する複数行のセットアップ文字列を作成する方法の例を次に示しますtimeit

setup = """
import random
l1 = [random.randrange(100) for _ in xrange(100)]
l2 = [random.randrange(100) for _ in xrange(10)]
"""

ここに別のヒントがあります。正確な測定を行うには、次の基本的なパターンに従って時間を計ることが重要です。

time = min(timeit.repeat(statements, setup=setup, repeat=R, number=N))

R が 3 以上の場合 ( R = 3)。これは、すべてを 3 回実行して得られる最速の値を取得します。これにより、システムでバックグラウンドで実行されている他の多くのことによる違いがなくなります。

これはあなたの質問全体に答えるものではありませんが、あなたの探求に役立つかもしれません.

于 2012-11-17T03:20:29.973 に答える