Python 睡眠不会';I don’我不能在需要的地方工作

Python 睡眠不会';I don’我不能在需要的地方工作,python,python-3.x,pygame,Python,Python 3.x,Pygame,所以,我正在学习PyGame(初学者)。当我在PyGame窗口上看到显示文本时,睡眠并没有像预期的那样工作。只要我点击任何一个键,它就会显示消息,然后休眠n秒。但当我尝试它时,它在显示之前睡了n秒。为什么会发生这种情况,我应该如何解决 import pygame import time pygame.init() white = (255, 255, 255) gameDisplay = pygame.display.set_mode((800, 600)) clock = pygame.

所以,我正在学习PyGame(初学者)。当我在PyGame窗口上看到显示文本时,睡眠并没有像预期的那样工作。只要我点击任何一个键,它就会显示消息,然后休眠n秒。但当我尝试它时,它在显示之前睡了n秒。为什么会发生这种情况,我应该如何解决

import pygame
import time

pygame.init()

white = (255, 255, 255)

gameDisplay = pygame.display.set_mode((800, 600))
clock = pygame.time.Clock()

def message_display(text):
    font = pygame.font.Font('freesansbold.ttf', 115)
    text_surface = font.render(text, True, (0, 0, 0))
    gameDisplay.blit(text_surface, (400, 300))
    pygame.display.update()
    time.sleep(2)

gameDisplay.fill(white)

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()
        if event.type == pygame.KEYDOWN:
            message_display("Hello")

    pygame.display.update()

pygame.quit()

由于某些代码优化导致了同步行为,因此在某些系统上似乎会发生这种情况。因此,迫使它在进入下一行之前完成执行似乎有帮助<代码>线程模块帮助完成了这项工作

def message(text):
    font = pygame.font.Font('freesansbold.ttf', 115)
    text_surface = font.render(text, True, (0, 0, 0))
    gameDisplay.blit(text_surface, (400, 300))
    pygame.display.update()

def message_display(text):
    import threading

    p1 = threading.Thread(target=message, args=(text, ))

    # start the thread execution
    p1.start()

    # wait for it to complete to join it with the main program
    p1.join()

    time.sleep(5)

我无法重现这个问题。在我按下一个键后,HELLO文本会立即出现。那么,如何修复它呢?我不懂。在我一个朋友的笔记本电脑上,它可以正常工作,但在另一个朋友的笔记本电脑和我的笔记本电脑上,它先休眠,然后显示。感觉就像在JS中发生了某种同步性。