2016-04-30 84 views
5

我正在使用Kivy構建遊戲。我遇到性能問題,所以我決定介紹該程序。如何分析Kivy應用程序?

我試圖運行它:

python -m cProfile main.py 

應用屏幕保持黑色。幾秒鐘後,一個異常導致程序崩潰:

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應用程序?

回答

5

kivy文檔聲明您不能從命令行執行此操作。

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

你可以做到這一點是這樣的:(從文檔複製)

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') 
+1

謝謝老兄:)非常有幫助。 –