Есть ли способ запустить цикл while 60 раз в секунду? - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь создать игру в Tkinter, и я хочу, чтобы цикл While запускался только x раз в секунду.Равномерно.

Я попытался разделить 1 на X и использовать модуль времени для ожидания этой суммы.Но он не запускался 60 раз в секунду, только 50.

def start(self):
        Frame.__init__(self, self.master)
        self.fpLength = 1 / self.fps
        while True:
            # Code here
            time.sleep(self.fpLength)

Я ожидаю, что код будет выполняться 60 раз в секунду.Но это около 55.

1 Ответ

0 голосов
/ 02 июля 2019

Если вы делаете это в потоке (см. Мой комментарий), вы можете попробовать что-то вроде

def start(self):
        Frame.__init__(self, self.master)
        # self.fpLength = 1 / self.fps
        while True:
            # Code here
            clock = time.perf_counter() * 60  #  measer time in 1/60 seconds
            sleep = int(clock) + 1 - clock  #  time till the next 1/60 
            time.sleep(sleep/60)

Поскольку вы можете использовать self.fps вместо константы 60 здесь, я использую это только для большей ясностикомментарии.

...