Python PyGTK:在分析时,gtk.main()花费的时间比预期的要多,我如何知道这是否合理?

Python PyGTK:在分析时,gtk.main()花费的时间比预期的要多,我如何知道这是否合理?,python,gtk,profiling,pygtk,Python,Gtk,Profiling,Pygtk,我的程序是一个不断更新显示的可视化工具。我正在尝试对其进行优化以提高帧速率,我最大的成本是gtk ncalls tottime percall cumtime percall filename:lineno(function) 1 9.159 9.159 45.476 45.476 {gtk._gtk.main} 868 8.146 0.009 9.884 0.011 xyz.py:291(gfx_transf

我的程序是一个不断更新显示的可视化工具。我正在尝试对其进行优化以提高帧速率,我最大的成本是gtk

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    9.159    9.159   45.476   45.476 {gtk._gtk.main}
      868    8.146    0.009    9.884    0.011 xyz.py:291(gfx_transform_queue)
      868    7.705    0.009   12.657    0.015 xyz.py:322(gfx_draw_queue)
      868    3.886    0.004    7.755    0.009 xyz.py:240(gfx_queue_atoms)
   868000    2.638    0.000    4.952    0.000 xyz.py:365(gfx_draw_circle)
  7027010    2.111    0.000    2.111    0.000 xyz.py:314(cmp_queue)
  1736000    2.015    0.000    2.015    0.000 {method 'draw_arc' of 'gtk.gdk.Drawable' objects}
   869844    1.728    0.000    1.728    0.000 {numpy.core._dotblas.dot}
      868    1.635    0.002    3.746    0.004 {sorted}
   869872    1.261    0.000    1.261    0.000 {numpy.core.multiarray.array}
      933    1.100    0.001    1.100    0.001 {method 'get_pointer' of 'gtk.gdk.Window' objects}

这是合理的行为,还是我可能做错了什么,让gtk.main占用了很多时间?

您对分析数据的解释是错误的。
main()实际上只是在用户与程序交互时运行程序。您看到的是运行程序需要时间,而不是gtk.main()本身。

您对分析数据的解释是错误的。
main()实际上只是在用户与程序交互时运行程序。您看到的是运行程序需要时间,而不是gtk.main()本身。

gtk.\u gtk.main是事件调度器,您完全无法控制它。cumtime大约是它将自己调用的所有gui方法的成本之和。看看这个例子中你需要多少,大约1000万。派他们去的理由仍然很谦虚。@janislaw我一定是瞎了眼;您从哪里获得~10M号码?可能我做了太多的gui调用。对不起,在draw_arc方法中,这可能是大约1.7M。不过,我还是坚持我以前的观点。对于dispatcher来说,这仍然是很多工作,我不确定是否有类似的竞争性框架,它的性能会更好。在我看来,你可以借助opengl/directx来提高速度,但Python本身可能会让你慢下来。谢谢——至少知道我没有做愚蠢得离谱的事情是件好事。我希望我可以使用opengl,但这必须通过网络进行,所以,好吧,这是不可能的。gtk._gtk.main是事件调度器,您对它没有任何控制权。cumtime大约是它将自己调用的所有gui方法的成本之和。看看这个例子中你需要多少,大约1000万。派他们去的理由仍然很谦虚。@janislaw我一定是瞎了眼;您从哪里获得~10M号码?可能我做了太多的gui调用。对不起,在draw_arc方法中,这可能是大约1.7M。不过,我还是坚持我以前的观点。对于dispatcher来说,这仍然是很多工作,我不确定是否有类似的竞争性框架,它的性能会更好。在我看来,你可以借助opengl/directx来提高速度,但Python本身可能会让你慢下来。谢谢——至少知道我没有做愚蠢得离谱的事情是件好事。我希望我可以使用opengl,但这必须通过网络进行,所以,好吧,这是不可能的。