2015-08-03 86 views
6

我一直在用KivyPie操作系統(Linux爲Kivy開發進行預配置)在Raspberry Pi上編寫Kivy圖形程序。Raspberry Pi Python(Kivy)與sudo極其緩慢

由於某些原因,如果以sudo啓動,它運行速度非常慢。 正常情況下,運行「python main.py」,程序每秒運行約30個週期。 但是,如果我做「sudo python main.py」,它會以每5-10秒1個週期的速度運行。

我需要使用sudo來訪問Raspberry的GPIO。 (除非我嘗試其他方式來做到這一點,我看到有人討論)。

我很感興趣,但是,sudo有如此巨大的性能下降的原因是什麼?有可能解決這個問題嗎? PS:在我的PC(Linux)上運行和不運行sudo的程序似乎不會導致這樣的問題。只在樹莓上。

+1

使用和不使用「sudo」運行時檢查了Kivy終端輸出。看起來,與sudo Kivy無法加載「egl_rpi」並使用不同的OpenGL版本 - 通常運行它使用OpenGL ES 2.0,而在sudo下它使用一些「OpenGL 2.1 Mesa」,與軟件光柵化器一起運行 - 所以這就是問題。 雖然我仍然不知道如何解決這個問題。 (以及爲什麼它無法使用sudo加載「egl_rpi」)。 – XArgon

回答

0

好吧,我會稱這個問題解決了,即使只剩下幾個問題。

下面是關鍵點:

  • 放緩是由Kivy導致暫時無法負荷下「命令」正確的視頻驅動程序,並使用軟件渲染來代替。
  • 我還沒有想出爲什麼驅動程序沒有加載sudo或如何解決它。然而...
  • 用Pyinstaller編譯程序後,一切工作正常。可執行文件可以用sudo啓動,GPIO正在工作,Kivy加載適當的驅動程序,一切正常。

總結起來,最初的問題的原因已被發現,沒有找到直接用Python啓動程序的修復程序,但通過用Pyinstaller編譯程序刪除了問題。 (仍然不是一個方便的調試方式。)

1

問題是,Kivy正在爲root用戶使用替代config.ini文件,而不是您在~/.kivy/config.ini中使用的替代config.ini文件。

在你的Python文件的頂部,你可以添加以下,迫使它使用 egl_rpi窗口:

import os 
os.environ['KIVY_WINDOW'] = 'egl_rpi' 

或者,您也可以使用在複製你的ini文件到根:

sudo cp ~/.kivy/config.ini /root/.kivy/config.ini