Python 派格勒:我怎样才能在需要的时候调用draw?
我有两个进程通过队列进行通信。一个是更改应用程序状态,另一个是运行pyglet事件循环。(只是附带说明,这可能不是一个多处理问题)。我只想在状态发生变化或中间可能有插值步数时绘制 我对两件事感到困惑Python 派格勒:我怎样才能在需要的时候调用draw?,python,optimization,draw,pyglet,event-loop,Python,Optimization,Draw,Pyglet,Event Loop,我有两个进程通过队列进行通信。一个是更改应用程序状态,另一个是运行pyglet事件循环。(只是附带说明,这可能不是一个多处理问题)。我只想在状态发生变化或中间可能有插值步数时绘制 我对两件事感到困惑 如果状态已更改,我可以编写自己的事件循环并在那里签入。然而,即使是文档中最小的应用程序,其性能也远远低于默认的app.run()。为什么呢 这是文档中的循环: 为True时: pyglet.clock.tick() 对于pyglet.app.windows中的窗口: 窗口。将_切换到() windo
为True时:
pyglet.clock.tick()
对于pyglet.app.windows中的窗口:
窗口。将_切换到()
window.dispatch_events()
window.dispatch\u事件('on\u draw')
window.flip()
def on_draw(自):
if self.check_if_state_change():
self.draw__新状态()
我知道我可以像这样防止口吃:
def on_draw(自):
if self.check_if_state_change():
self.draw__新状态()
其他:
self.再画一次旧的状态()
但我不想这样做,因为重新绘制旧状态需要时间,而性能对于此应用程序至关重要
class CustomLoop(app.EventLoop):
def怠速(自):
dt=自时钟更新时间()
self.clock.call_调度函数(dt)
#重新绘制所有窗口
对于app.windows中的窗口:
窗口。将_切换到()
window.dispatch\u事件('on\u draw')
window.flip()
窗口。\u legacy\u invalid=False
#无超时(空闲()调用之间的睡眠时间)
返回0
app.event_loop=CustomLoop()
app.run()#锁定线程
我认为他们的文档应该添加一个更改事件循环的最佳实践示例