【问题标题】:Raspberry Pi Python (Kivy) extremely slow with sudoRaspberry Pi Python (Kivy) 使用 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”)。

标签: python raspberry-pi kivy sudo


【解决方案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编译程序解决了这个问题。 (不过,这不是一种方便的调试方式。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-31
      • 1970-01-01
      • 1970-01-01
      • 2017-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-26
      相关资源
      最近更新 更多