有没有办法 运行 While 循环每秒 60 次?
Is there an way to run a While loop 60 times a second?
我正在尝试在 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。
如果你在线程中进行(见我的评论)你可以尝试类似
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,我用它只是为了更清楚的注释。
我正在尝试在 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。
如果你在线程中进行(见我的评论)你可以尝试类似
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,我用它只是为了更清楚的注释。