Manual pyglet loop freezes after a few iterations(手动侏儒循环在几次迭代后冻结)
本文介绍了手动侏儒循环在几次迭代后冻结的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在测试在一个更大的项目中使用的pyglet,显然,pyglet建议/希望您使用它自己的循环(通过pyglet.app.run())
出于与其他包的兼容性以及不必重写整个程序结构的原因,这是我不想要的东西。
这里我将来自不同部分的原型代码以及教程和文档粘合在一起。 它运行5-15次,然后就冻结了,不打印任何东西,也不做任何绘图更新。
from __future__ import division, print_function
import sys
import pyglet
window = pyglet.window.Window(800, 800, resizable=True)
window.set_caption('Pyglet Testing')
window.flip()
image = pyglet.resource.image('Sprites/scout.png')
def draw(dt):
image.blit(700-dt, 400)
while not window.has_exit:
dt = pyglet.clock.tick()
window.dispatch_events()
window.clear()
draw(dt)
window.flip()
print(dt)
我的怀疑是我没有做任何事情来捕捉和处理事件,所以在某个点上它只是溢出事件并阻止整个事件。然而,我无法理解如何做到这一点,而且在不到1秒的时间里被事件淹没似乎有点太多了。
有帮助吗?
推荐答案
基本上您正在做的是发送尽可能多的图像。blit(...)命令发送到窗口,直到PC可能无法再处理它。
例如,如果您像这样更改代码:
添加此代码:
import time
from time import sleep
更改代码:
def draw(dt):
image.blit(700-dt, 400)
sleep(0.1) #insert this line
在执行修改后的代码时,您会注意到它没有冻结,输出DT大约是0.11秒,这是从最后一个"滴答"开始的秒数=休眠时间(0.1秒)+剩余时间(清除窗口,显示新帧...)
这篇关于手动侏儒循环在几次迭代后冻结的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:手动侏儒循环在几次迭代后冻结


猜你喜欢
- 使用 Cython 将 Python 链接到共享库 2022-01-01
- ";find_element_by_name(';name';)";和&QOOT;FIND_ELEMENT(BY NAME,';NAME';)";之间有什么区别? 2022-01-01
- YouTube API v3 返回截断的观看记录 2022-01-01
- 如何使用PYSPARK从Spark获得批次行 2022-01-01
- 检查具有纬度和经度的地理点是否在 shapefile 中 2022-01-01
- 计算测试数量的Python单元测试 2022-01-01
- 我如何透明地重定向一个Python导入? 2022-01-01
- 使用公司代理使Python3.x Slack(松弛客户端) 2022-01-01
- 我如何卸载 PyTorch? 2022-01-01
- CTR 中的 AES 如何用于 Python 和 PyCrypto? 2022-01-01