在cProfile中,{builtinmethodmainloop}是什么意思?

2024-06-07 12:53:15 发布

您现在位置:Python中文网/ 问答频道 /正文

{main函数的第二个执行时间按“}的最长时间”排序?我用pstat查看了相同的条目_查看器.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越多,花在mainloop上的时间就越多。这太疯狂了!我以为我的运行时会被CUDA内核中的分支分歧或主机GPU内存传输杀死。天啊,我是个糟糕的程序员!在

我怎么让Tkinter占用了我这么多的运行时间?在

{1美元^


Tags: 函数pytime排序maintkinter时间条目
2条回答

mainloop是Tkinter中的event loop。它等待事件,并在事件发生时对其进行处理。在

这是一个反复出现的现象,您将在所有gui以及任何其他事件驱动框架(如Twisted或Tornado)中看到。在

首先,如果将制表符更改为空格,则更容易查看,如:

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.

在你加速某件事之后,你仍然会发现一些事情需要很高的包含时间,但是总的花费时间会更少。 最终你会达到这样一个程度:有些东西仍然占很高的百分比,但你再也无法想出如何改进它。在

相关问题 更多 >

    热门问题