Raspberry Pi Python (Kivy) очень медленно с sudo
Я писал графическую программу Kivy на Raspberry Pi, с ОС KivyPie (Linux, предварительно настроенной для разработки Kivy).
по какой-то причине он работает очень медленно, если запущен с sudo. Обычно работает "python main.py", программа работает со скоростью около 30 циклов в секунду. Однако, если я сделаю "sudo python main.py", он работает так же медленно, как 1 цикл в 5-10 секунд.
Мне нужно использовать sudo для доступа к GPIO малины. (если я не попытаюсь сделать это по-другому, что я вижу, люди обсуждают).
Мне интересно, хотя, что может быть причиной такого сильного падения производительности с sudo? И можно ли обойти это?
PS: запуск той же программы на моем ПК (Linux) с и без sudo, похоже, не вызывает такой проблемы. Только на малине.
2 ответов
проблема в том, что Kivy использует альтернативную конфигурацию.ini-файл для пользователя root, а не тот, который у вас есть в ~/.kivy/config.ini
.
в верхней части вашего файла python вы можете добавить следующее, чтобы заставить его использовать :
import os
os.environ['KIVY_WINDOW'] = 'egl_rpi'
кроме того, вы можете скопировать файл ini в корень, используя:
sudo cp ~/.kivy/config.ini /root/.kivy/config.ini
Ну, я бы назвал эту проблему решенной, даже если останется несколько вопросов.
вот ключевые моменты:
- замедление вызвано тем, что Kivy не может загрузить правильный видеодрайвер в разделе "sudo" и вместо этого использовать программный рендеринг.
- Я не понял, почему драйвер не загружается с sudo или как его исправить. Однако...
- после компиляции программы с Pyinstaller, все отлично работает. Исполняемый файл может быть запущен с sudo GPIO работает, Kivy загружает соответствующий драйвер, все работает быстро, как и должно.
подводя итог, причина первоначальной проблемы была найдена, исправление для запуска программы непосредственно с Python еще не найдено, но проблема была удалена путем компиляции программы с Pyinstaller. (все же, не самый удобный способ отладки.)