Raspberry Pi Python (Kivy) 使用 sudo 非常慢
Posted
技术标签:
【中文标题】Raspberry Pi Python (Kivy) 使用 sudo 非常慢【英文标题】:Raspberry Pi Python (Kivy) extremely slow with sudo 【发布时间】:2015-10-25 11:47:10 【问题描述】:我一直在使用 KivyPie OS(为 Kivy 开发预配置 Linux)在 Raspberry Pi 上编写 Kivy 图形程序。
由于某种原因,如果使用 sudo 启动,它的运行速度会非常慢。 通常,运行“python main.py”,程序每秒运行大约 30 个周期。 但是,如果我执行“sudo python main.py”,它会以每 5-10 秒 1 个周期的速度运行。
我需要使用 sudo 来访问 Raspberry 的 GPIO。 (除非我尝试其他方法,否则我会看到人们讨论)。
不过,我很感兴趣,使用 sudo 导致性能大幅下降的原因可能是什么?有没有可能解决这个问题?
PS:在我的 PC (Linux) 上运行相同的程序,无论是否使用 sudo,似乎都不会导致此类问题。仅在覆盆子上。
【问题讨论】:
在使用和不使用“sudo”运行时检查 Kivy 终端输出。似乎使用 sudo Kivy 无法加载“egl_rpi”并使用不同的 OpenGL 版本 - 正常运行它使用 OpenGL ES 2.0,而在 sudo 下它使用一些“OpenGL 2.1 Mesa”,使用软件光栅化器运行 - 所以这就是问题。不过,我仍然不知道如何解决这个问题。 (以及为什么无法使用 sudo 加载“egl_rpi”)。 【参考方案1】:问题在于 Kivy 正在为 root 用户使用替代的 config.ini 文件,而不是您在 ~/.kivy/config.ini
中拥有的那个。
在您的 python 文件的顶部,您可以添加以下内容以强制它使用
egl_rpi
窗口:
import os
os.environ['KIVY_WINDOW'] = 'egl_rpi'
或者,您可以使用以下命令将您的 ini 文件复制到根目录:
sudo cp ~/.kivy/config.ini /root/.kivy/config.ini
【讨论】:
【参考方案2】:好吧,我认为这个问题已经解决了,即使还有一些问题。
以下是重点:
速度变慢的原因是 Kivy 无法在“sudo”下加载正确的视频驱动程序,而是使用软件渲染。 我还没有弄清楚为什么驱动程序没有加载 sudo 或如何修复它。不过…… 使用 Pyinstaller 编译程序后,一切正常。可执行文件可以使用 sudo 启动,GPIO 正在工作,Kivy 加载了适当的驱动程序,一切都运行得很快。总结一下,一开始问题的原因已经找到了,直接用Python启动程序的问题还没找到解决办法,但是用Pyinstaller编译程序解决了这个问题。 (不过,这不是一种方便的调试方式。)
【讨论】:
以上是关于Raspberry Pi Python (Kivy) 使用 sudo 非常慢的主要内容,如果未能解决你的问题,请参考以下文章
慢响应Firebase + Python + Raspberry pi