python心理学实验平台_【Python】心理学实验中的几种计时方法的对比

1、pygame.time.get_ticks()

获取pygame.init()被调用之后所经过的毫秒数,如果未调用pygame.init(),获取的数值将始终为零。

测试代码:

import pygame

pygame.init()

t0 = pygame.time.get_ticks()

t1 = pygame.time.get_ticks()

t = t1 - t0

print(t, t0, t1)

结果:

0 449 449

pygame.time.get_ticks()获取的是以毫秒为单位的、整数类型的数值,但在心理学实验中,我们往往需要精度更高的时间值(以毫秒为单位,一般取小数点后两位)。

2、time.time()

time是Python自带的标准库,该函数获取的是自1970年1月1日00:00:00 (UTC) 以来经过的秒数(注意单位是秒)。

测试代码:

import time

t0 = time.time()

t1 = time.time()

t = t1 - t0

print(t, t0, t1)

结果:

0.0 1602209599.2846003 1602209599.2846003

可以发现,就时间精度来看,pygame.time.get_ticks()甚至比不上Python自带的标准库time中的计时方法。

3、psychopy.core.getTime()

获取的是自psychopy.core模块加载以来经过的时间,以秒为单位,但精度是小于毫秒的。

测试代码:

from psychopy import core

t0 = core.getTime()

t1 = core.getTime()

t = t1 - t0

print(t, t0, t1)

结果:

1.309999788645655e-05 0.030334899995068554 0.03034799999295501

另一个相关的函数是psychopy.core.getTime(),该函数的作用是设置一个时钟,例如我们可以设置一个名为timer的时钟,接着便可以使用timer.getTime()来获取timer的时间。例如:

timer = core.Clock()

t0 = timer.getTime()

设置时钟主要有两个好处:1)可以对时钟进行更多自定义的操作,例如可以使用timer.add()在timer中填充时间,或者使用timer.reset()来重置timer的时间,等等。2)可以设置多个相互独立的时钟,以满足对多个对象进行计时的功能。

此外还有psychopy.clock.getTime()和psychopy.clock.getAbsTime()。对于前者,貌似官网上没有详细的介绍,不过应该也属于psychopy自带的一个时钟。至于后者,其功能与time.time()相同,但获取的是整数类型的数值,因此精度比time.time()稍微差一些,官方的建议是可以将这个函数获取的数值作为数据的文件名的一部分,从而创建文件名不重复的数据文件,不过我感觉与其用这个还不如用time.strftime()呢,毕竟time.strftime()的可读性更好。

小结

当使用time.sleep()、psychopy.core.wait()这样的函数来等待时间时,上述的计时函数是不会将等待时间计算在内的

pygame.time.get_ticks()和psychopy.clock.getAbsTime()获取的是整数类型(int)的时间,其它则是浮点数(float)

就时间精度而言:psychopy.core.getTime() > time.time() > pygame.time.get_ticks()

就灵活性而言,psychopy.core.getTime()是最好的

所以综合来看,在收集反应时信息时,优先使用psychopy.core.getTime(),至于pygame.time.get_ticks()则最好不要用。

----------2020.10.14更新----------

修改了psychopy部分的内容,修改了小结部分的一处错误。

Reference

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值