在运行pygame程序关闭window/GUI

在运行pygame程序关闭window/GUI

Pygame很适合写2D/3D的游戏,操作简单,功能齐全。但问题是更新不及时,1.9.3版本更新距离上一次更新过去了8年。不过好像最近又恢复了更新,最新版本为1.9.6.
在运行pygame程序关闭window/GUI_第1张图片
在运行pygame程序关闭window/GUI_第2张图片
最近用pygame写了一个小游戏,希望用神经网络去训练AI agent来达到更高的分数。在设计游戏和调试游戏规则时pygame.surface的display很好用,可以实时看到动作及其效果。但是游戏设计完成后,只需要把frames输入神经网络进行训练,即每个像素点的RGB值。这时显示window的功能就不需要发挥作用了,显示window显然需要浪费大量时间,且经常出现无法响应的情况。而且我用A3C使用多个threads训练时会出现不同agent的动作显示在同一个window的情况,非常混乱。当我将程序传的headless的服务器上训练时会出现这样的错误:

No available video device.

也就是说pygame的surface必须要通过视频设备显示出来才可以进行操作。我试过将程序中的 pygame.display.flip()去掉,虽然window中不显示我画在上面的物体了,但是依然会弹开一个全黑的窗口。
pygame中没有像arcade.close_window()或者arcade.start_render(), arcade.finish_render()这样的命令,并不能直接关闭窗口。经过查阅资料终于找到了一个方法:在程序最开始加上下面的命令,就可以不显示window,且可以在远程服务器上运行了。

os.environ[‘SDL_VIDEODRIVER’]= “dummy”

在选择视频设备时选择dummy,即dummy driver (no output)。选择x11,即X Window System上显示,也是一种常用选择。

你可能感兴趣的:(Python基础)