Raspberry Pi Python(Kivy)与sudo极其缓慢

问题描述:

我一直在用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

好吧,我会称这个问题解决了,即使只剩下几个问题。

下面是关键点:

  • 放缓是由Kivy导致暂时无法负荷下“命令”正确的视频驱动程序,并使用软件渲染来代替。
  • 我还没有想出为什么驱动程序没有加载sudo或如何解决它。然而...
  • 用Pyinstaller编译程序后,一切工作正常。可执行文件可以用sudo启动,GPIO正在工作,Kivy加载适当的驱动程序,一切正常。

总结起来,最初的问题的原因已被发现,没有找到直接用Python启动程序的修复程序,但通过用Pyinstaller编译程序删除了问题。 (仍然不是一个方便的调试方式。)

问题是,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