按总时间排序,第二个执行时间最长的函数是“{内置方法mainloop}”?我用pstats_viewer.py查看了相同的条目并点击它,然后说:
Function Exclusive time Inclusive time Primitive calls Total calls Exclusive per call Inclusive per call
Tkinter.py:359:mainloop 0.00s 561.03s (26.3%) 1 1 0.00s 561.03s
这是什么意思?
修改
这是我的代码较长时间运行的cProfile输出的一部分。我解决的ODE越多,用于主循环的时间就越多。这太疯狂了!我认为我的运行时被我的CUDA内核中的分支差异或主机-GPU内存传输所杀死。上帝,我是一个可怕的程序员!
我是如何让Tkinter在我的运行时间中占据那么多?
答案 0 :(得分:1)
mainloop
是Tkinter中的event loop。它等待事件并在它们进入时处理它们。
这是一个反复出现的事情,您将在所有GUI以及任何其他事件驱动的框架(如Twisted或Tornado)中看到。
答案 1 :(得分:-1)
首先,如果将标签更改为空格,则更容易看到,如:
Function Exclusive time Inclusive time Primitive calls Total calls Exclusive per call Inclusive per call
Tkinter.py:359:mainloop 0.00s 561.03s (26.3%) 1 1 0.00s 561.03s
独占时间是指程序计数器在该例程中的时间。对于顶级例程,您可能会认为这几乎为零。
包含时间表示在例程调用的所有例程中包括时间。对于顶级例程,您可以预期这几乎是100%。 (我不明白26.3%意味着什么。)
如果你想提高速度,你需要做的是找到1)具有高百分比包容时间的活动,2)你可以做一些关于的事情。
This link shows the method I use.
在你加快速度之后,你仍然会发现占用时间很长的事情,但总的经过时间会更少。 最终你会得到一些事情仍然需要很高的百分比,但你不能再弄清楚如何改进它。