Python 2.7 标准化比赛抽签时间

Python 2.7 标准化比赛抽签时间,python-2.7,pandas,pygame,Python 2.7,Pandas,Pygame,我正在使用pygame进行认知科学实验 我在屏幕上绘制对象,对象的数量变化很大:4-24个。 当一切都计算好后,我立刻画出它们。 问题是,显然,24个项目的计算时间要比4个项目长得多。 这会导致在发出命令开始计算要绘制的对象和它们实际显示在屏幕上之间的时间变化。 虽然只有几毫秒,但这是我想要避免的实验噪音 所有对象必须同时显示 下面是我为实现这一点而编写的函数。 所有参数都由程序传递,该程序从实验开始前计算的数据帧中提取信息。 如果可能的话,计算如何提前从DF中提取项目可能会有所帮助 def d

我正在使用pygame进行认知科学实验

我在屏幕上绘制对象,对象的数量变化很大:4-24个。 当一切都计算好后,我立刻画出它们。 问题是,显然,24个项目的计算时间要比4个项目长得多。 这会导致在发出命令开始计算要绘制的对象和它们实际显示在屏幕上之间的时间变化。 虽然只有几毫秒,但这是我想要避免的实验噪音

所有对象必须同时显示

下面是我为实现这一点而编写的函数。 所有参数都由程序传递,该程序从实验开始前计算的数据帧中提取信息。 如果可能的话,计算如何提前从DF中提取项目可能会有所帮助

def dot_draw(x_positions, y_positions, RGBs):
    for dot in range(0, len(x_positions)):
        pygame.draw.circle( screen, RGBs[dot], [ x_positions[dot], y_positions[dot] ], 10) 
    pygame.display.update()
所有对象必须同时显示

当您在屏幕表面绘制某些内容时,只有在调用
pygame.display.udpate()
pygame.display.flip()
时才会显示该内容 因此,当您希望同时显示多个更改时,只需在屏幕上绘制完所有圆等后调用一次
pygame.display.update()


针对你的评论:


如果您事先知道要绘制什么,您可以创建几个屏幕大小的曲面,然后绘制到该曲面,而不是直接绘制到屏幕曲面,然后将这些曲面点到屏幕曲面。

谢谢,但我知道这一点。我希望,我的职能反映了这种理解
pygame.display.update()
仅在
for
循环完成时调用。问题是for循环可以传递4-24个项目来绘制,因此它完成工作的时间可能会有所不同。我倾向于提前完成所有这些计算,而不是在实验进行的过程中进行。如果你事先知道绘制什么,你可以创建几个屏幕大小的表面,然后绘制到该表面,而不是直接绘制到屏幕表面,然后将这些图像blit到屏幕表面。我目前解决此问题的方法是使用matplotlib在内存中创建图像,并简单地使用pygame显示它们……我没有想到我不必离开pygame来完成此任务(即使用多个表面)。所以,这应该行得通。非常感谢。