【问题标题】:Tkinter in Python - Is it supposed to be slow or is the bottleneck somewhere else in the program?Python中的Tkinter - 它应该很慢还是程序中其他地方的瓶颈?
【发布时间】:2011-11-05 02:17:56
【问题描述】:

在学校,我们必须使用 Python 和 Tkinter 作为一个小组项目来创建一个游戏,由于程序变得相当大,我想知道我的问题是否是由 Tkinter 本身引起的,然后再尝试搜索程序中的问题.

问题是,当我们开始创建单位时,当使用 create_rectangle 方法创建多个单位(比如 80 个)要同时显示时,如果我们开始四处移动它们,它会变得非常不稳定。在我们当时展示的游戏部分,有几个元素(一些使用小 gif)用于多个菜单,画布上有我刚才提到的单位和一些小建筑物也使用了一些小动图。

我们使用 after 方法回调一个方法,该方法删除画布上的所有内容,然后每 50 毫秒在正确位置重绘所有建筑物和单元。

这应该是 Tkinter 容易处理的事情还是我们程序本身的问题?

【问题讨论】:

  • 它应该很慢,他们这样设计的,所以你可以在它运行时看到它在做什么。没有人喜欢运行太快的鬼鬼祟祟的软件——开个玩笑:-)
  • @Ron 我应该更好地表达我的问题,哈哈。
  • 根据我的经验 tkinter 非常慢
  • 去掉样式有什么变化吗?

标签: python python-3.x tkinter


【解决方案1】:

没有人能够回答这个具体问题,因为它取决于很多因素。当您遇到性能问题时,您应该测量在每个功能上花费的时间,以发现瓶颈在哪里。它被称为分析,你有一个很好的 Python 内置分析器教程:http://docs.python.org/library/profile.html

您正在寻找两种信息:

  • 您在其中花费最多时间的函数,包括对其他函数的调用。显然,列表中的第一个是您的主程序,因为您的所有程序都在其中运行。不过,您可能会发现一个消耗比您想象的更多的函数

  • 您在其中花费的时间最多的函数,不包括对其他函数的调用。在那里,您将拥有基本功能。那些经常被调用的,等等。同样,如果某些结果让你感到惊讶:用你自己的眼睛调查。

如果您发现大部分时间都花在 tkinter 内部,那么您可能会以错误的方式使用它。尝试隔离一个小型独立程序调用 tkinter 并显示类似的性能问题,并将其发布在这里。分析信息应该对此任务有用。

【讨论】:

  • 感谢您的回答。我一定会阅读该教程并介绍我的程序!
  • 我对其进行了分析,似乎该程序在一个应该很快的功能上花费了太多时间。我已经对其进行了快速修复,并且我已经注意到性能有了巨大的提升。谢谢!
【解决方案2】:

Tk 可以表现不错,但是如果你使用像http://pygame.org这样的库,你可能会在编写游戏时获得更好的开箱即用性能。

【讨论】:

  • 我知道 pygames 会是更好的选择,但由于这是针对学校的,我们必须在这个项目中使用 Tkinter,以便每个团队都使用老师更熟悉的库。另外,如果你说 tk 可以表现得很好,我会看看我是否可以改进我们代码的某些部分。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多