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的持续时间(以秒为单位)。
这给了我大约 56 毫秒的时间。我不确定它是否合理,是否正确,以及我是否应该启用垃圾收集?


对于背景变化,我遇到了更多问题。由于我在全屏模式下进行测试,因此我尝试将所有这些都放入设置参数中:

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 回答