我需要弄清楚发送更改背景颜色或播放声音的命令与使用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')
。
答案 0 :(得分: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
)。这需要通过三次完成所有操作获得的最快值,这将消除由于系统在后台运行的许多其他因素而产生的差异。
这不能回答你的整个问题,但可能对你的任务有帮助。