我是一名僵尸开发者,但我是Python的新手。我现在已经读了几个小时,计划设计一个新的机器人。
我希望您对运行GUI和非常快速的核心循环的性能问题有所了解,以保持适度的游戏实体阵列更新。
机器人包含一个无限循环中的主数组,它不断更新并运行计算。我从过去的机器人那里知道,GUI会提供性能问题,因为他们需要等待检测事件。
我看过第二个帖子的可能性,但我读到tkinter不喜欢多个帖子。
我已经检查过使用.after从tkinter mainloop运行核心数组循环的想法,但我的直觉告诉我这将是不好的做法。
现在我觉得我所能做的就是尝试在一个循环中包含GUI和核心数组,但这对于性能来说从未如此。
有没有更好的方法来设计我未发现的机器人结构?
修改
我决定从修补程序中删除mainloop并简单地使用.update()更新我拥有的任何gui组件,现在,这只包含覆盖游戏屏幕的一些标签。
到目前为止,标签和机器人的功能都很好。
答案 0 :(得分:1)
如果你想在一个单独的Python 线程中运行CPU密集型工作,它会使CPU的其他线程饿死。 Python线程仅适用于有效等待I / O(原因是Global Interpreter Lock)。
我要么尝试multiprocessing
,这可能会很好,具体取决于您需要在进程之间传递的数据量,或者使用不同的语言。
答案 1 :(得分:1)
使用tkinter和.after
,我写了一个小的单线程程序,显示1000个椭圆,在屏幕上随机移动,每50ms更新一次,我不会看到任何滞后。在10毫秒,我想我可能会看到一点点滞后。
这些是简单的对象,几乎没有数学计算新的位置,除了窗口的边缘外没有碰撞检测。
GUI看起来很敏感。我可以尽可能快地在同一个GUI中输入文本窗口。
我不知道这与你想做什么相比。