Python-更新核心数组循环<;100毫秒,并保持tkinter GUI的响应速度

Python-更新核心数组循环<;100毫秒,并保持tkinter GUI的响应速度,python,multithreading,python-3.x,user-interface,mmo,Python,Multithreading,Python 3.x,User Interface,Mmo,我是一名机器人开发人员,但我对Python还是新手。我已经读了好几个小时了,正在计划一个新机器人的设计 我想听听您对运行GUI和非常快速的核心循环以保持适度的游戏实体更新的性能问题的看法 机器人由无限循环中的主阵列组成,该循环不断更新并运行计算。从我过去的机器人程序中我知道GUI会带来性能问题,因为它们需要等待检测事件 我已经研究了第二个线程的可能性,但是我读到tkinter不喜欢多个线程 我已经了解了使用.after从tkinter主循环运行核心阵列循环的想法,但我的直觉告诉我,这将是一种糟糕

我是一名机器人开发人员,但我对Python还是新手。我已经读了好几个小时了,正在计划一个新机器人的设计

我想听听您对运行GUI和非常快速的核心循环以保持适度的游戏实体更新的性能问题的看法

机器人由无限循环中的主阵列组成,该循环不断更新并运行计算。从我过去的机器人程序中我知道GUI会带来性能问题,因为它们需要等待检测事件

我已经研究了第二个线程的可能性,但是我读到tkinter不喜欢多个线程

我已经了解了使用.after从tkinter主循环运行核心阵列循环的想法,但我的直觉告诉我,这将是一种糟糕的做法

现在我觉得我所能做的就是尝试将GUI和核心阵列都包含在一个循环中,但这对性能从来没有好处

有没有更好的方法来设计这个机器人的结构,我还没有发现

编辑

我决定从tinker中删除mainloop,只需使用.update()更新我拥有的任何gui组件,现在,它只包含一些覆盖在游戏屏幕上的标签


到目前为止,标签和bot的功能都运行得很好。

如果您想在单独的Python线程中运行CPU密集型工作,它将耗尽其他线程的CPU。Python线程只适合高效地等待I/O(原因是错误)


我会尝试,这取决于进程之间需要传递的数据量,或者使用不同的语言

如果希望在单独的Python线程中运行CPU密集型工作,它将耗尽其他线程的CPU。Python线程只适合高效地等待I/O(原因是错误)


我会尝试,这取决于进程之间需要传递的数据量,或者使用不同的语言

使用tkinter和
之后,我编写了一个小的单线程程序,显示1000个在屏幕上随机移动的椭圆,每50毫秒更新一次,我没有看到任何延迟。在10毫秒时,我想我可能会看到一点滞后

这些都是简单的对象,几乎没有计算新位置的数学知识,并且除了针对窗口边缘之外,没有碰撞检测

GUI似乎响应迅速。我能够以最快的速度在同一个GUI中输入文本窗口


我不知道这和你想做的相比如何

使用tkinter和
之后,我编写了一个小的单线程程序,显示1000个在屏幕上随机移动的椭圆,每50毫秒更新一次,我没有看到任何延迟。在10毫秒时,我想我可能会看到一点滞后

这些都是简单的对象,几乎没有计算新位置的数学知识,并且除了针对窗口边缘之外,没有碰撞检测

GUI似乎响应迅速。我能够以最快的速度在同一个GUI中输入文本窗口


我不知道这和你想做的相比如何

你对“游戏实体的适度阵列”的定义是什么?10? 100? 1000? 您是否做过任何实验来了解如何使用
.after
执行操作?它只需要几十行代码。数组中大约有1000个存储的变量,我希望每100ms更新一次,从读取游戏内存中获取。我还没有做过实验,诚然,我是Python新手。我只是想依靠这里的经验,所以我不会沿着一条切线走下去,我会浪费很多时间,结果发现我使用了完全错误的方法。你对“适度的游戏实体数组”的定义是什么?10? 100? 1000? 您是否做过任何实验来了解如何使用
.after
执行操作?它只需要几十行代码。数组中大约有1000个存储的变量,我希望每100ms更新一次,从读取游戏内存中获取。我还没有做过实验,诚然,我是Python新手。我只是想依靠这里的人的经验,所以我不会沿着一条切线走下去,我会浪费好几个小时,结果发现我用的是完全错误的方法。谢谢,我也这么想。同时我会研究多线程。谢谢,我也这么想。同时我将研究多线程。谢谢,这很有用。谢谢,这很有用。