如何配置Kivy应用程序? [英] How can I profile a Kivy application?

查看:80
本文介绍了如何配置Kivy应用程序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Kivy开发游戏.我遇到性能问题,因此决定对程序进行概要分析.

I'm building a game using Kivy. I'm encountering performance issues so I decided to profile the program.

我尝试通过以下方式运行它:

I tried to run it by:

python -m cProfile main.py

应用程序屏幕保持黑色.几秒钟后,异常使程序崩溃:

The application screen stays black. After several seconds, an exception crashes the program:

 Traceback (most recent call last):
   File "c:\python27\Lib\runpy.py", line 162, in _run_module_as_main
     "__main__", fname, loader, pkg_name)
   File "c:\python27\Lib\runpy.py", line 72, in _run_code
     exec code in run_globals
   File "c:\python27\Lib\cProfile.py", line 199, in <module>
     main()
   File "c:\python27\Lib\cProfile.py", line 192, in main
     runctx(code, globs, None, options.outfile, options.sort)
   File "c:\python27\Lib\cProfile.py", line 49, in runctx
     prof = prof.runctx(statement, globals, locals)
   File "c:\python27\Lib\cProfile.py", line 140, in runctx
     exec cmd in globals, locals
   File "main.py", line 26, in <module>
     GameApp().run()
   File "C:\Users\Aviv\Envs\game\lib\site-packages\kivy\app.py", line 828, in run
     runTouchApp()
   File "C:\Users\Aviv\Envs\game\lib\site-packages\kivy\base.py", line 487, in runTouchApp
     EventLoop.window.mainloop()
   File "C:\Users\Aviv\Envs\game\lib\site-packages\kivy\core\window\window_sdl2.py", line 619, in mainloop
     self._mainloop()
   File "C:\Users\Aviv\Envs\game\lib\site-packages\kivy\core\window\window_sdl2.py", line 403, in _mainloop
     x, y = self._fix_mouse_pos(x, y)
   File "C:\Users\Aviv\Envs\game\lib\site-packages\kivy\core\window\window_sdl2.py", line 358, in _fix_mouse_pos
     self.mouse_pos = x, self.system_size[1] - y
   File "kivy\properties.pyx", line 408, in kivy.properties.Property.__set__ (kivy\properties.c:5114)
   File "kivy\properties.pyx", line 446, in kivy.properties.Property.set (kivy\properties.c:5876)
   File "kivy\properties.pyx", line 501, in kivy.properties.Property.dispatch (kivy\properties.c:6557)
   File "kivy\_event.pyx", line 1224, in kivy._event.EventObservers.dispatch (kivy\_event.c:13497)
   File "kivy\_event.pyx", line 1130, in kivy._event.EventObservers._dispatch (kivy\_event.c:12696)
   File "game\opening_screen.py", line 22, in _on_mouse_pos
     if self.ids.start_button.collide_point(*position):
   File "kivy\properties.pyx", line 757, in kivy.properties.ObservableDict.__getattr__ (kivy\properties.c:11882)
 AttributeError: 'super' object has no attribute '__getattr__'

为什么会发生这种情况,如何配置我的Kivy应用程序?

Why is this happening, and how can I profile my Kivy application?

推荐答案

奇异文档指出您不能从命令行执行该操作.

The kivy docs state that you cannot do it from the command line.

https://kivy.org/docs/api-kivy.app.html

您可以这样操作:(从文档中复制)

You can do it like this: (copied from the docs)

import cProfile

class MyApp(App):
    def on_start(self):
        self.profile = cProfile.Profile()
        self.profile.enable()

    def on_stop(self):
        self.profile.disable()
        self.profile.dump_stats('myapp.profile')

这篇关于如何配置Kivy应用程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆