有没有办法每秒运行一次While循环60次?

时间:2019-07-02 07:17:13

标签: python while-loop frame-rate

我正在尝试在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 :(得分:0)

如果您是在线程中进行操作(请参阅我的评论),则可以尝试类似的操作

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,我仅将其用于更清晰的注释。