При запуске двух программ, которые используют контакты python gpio на Raspberry Pi, становится медленнее. Один из них - магнитный датчик, а другой - датчик температуры и влажности. Последний - тот, который замедляется. Вместо того, чтобы печатать температуру каждые 2 секунды, она печатает каждые 5-10 секунд. Если это происходит в магнитном датчике, работа выполняется быстрее.Python становится медленным при запуске двух программ в малине pi
ответ
Похоже, ваша проблема не в Python, а в IO. Даже если вы используете разные контакты, GPIO из Малины использует одну и ту же шину для обработки всех контактов, поэтому одному процессу нужно ждать другого использования, чем иметь время.
Вы можете справиться с этими проблемами с помощью решений, но все, вероятно, будут чем-то похожим на объединение программ.
basic ideia: Смешайте обе программы только одним. Сингулярный процесс/поток для управления всеми чтениями.
улучшенный идеал: Разделите свой код на три процесса. Два из них будут просто читать/писать массив и использовать это значение, как это было в GPIO. Одним из этих процессов будет ваш основной процесс и будет SharedArray для обработки данных GPIO. Помните, что чтение из ОЗУ намного лучше/быстрее, чем чтение из GPIO, поэтому просто используйте Array для обновления состояния от ввода-вывода. Вы можете использовать один массив для установки новых значений, а другой - для хранения фактических значений.
Некоторое время назад я использовал некоторый Sockets для передачи некоторых данных ввода-вывода по некоторым потокам и мог получать обновленные данные (изображение с камеры) и делиться ими с потоками с промежутком в 100 мс, просто избегая зазора ввода-вывода. Таким образом, вы можете получить аналогичный результат, используя SocketServer lib с некоторыми workers, чтобы распространять информацию.
Вместо того чтобы запускать программы одновременно, попробуйте запустить их один за другим. Очевидно, что у малины Pi есть аппаратные ограничения из-за его размера и стоимости. То, что я хотел бы предложить, - это запустить только одну программу за раз. Вы можете поместить их в базовый цикл, где вы запустите программу 1, затем запустите программу 2, а затем вернитесь к началу цикла.
- 1. Открытие программ на малине Pi с терминала
- 2. weblogic.Deployer становится медленным при запуске несколько раз
- 3. Задержки Python на малине Pi
- 4. Нет звука при запуске jsyn на малине pi (Raspbian Jessie)
- 5. Неизвестная ошибка при запуске node_mdns на node.js на малине pi
- 6. Запуск приложения узла при запуске на малине pi
- 7. Проблемы при одновременном запуске двух программ с Bash
- 8. Автоматически запущенный скрипт python на малине pi
- 9. Запуск Sonic Pi автоматически из командной строки на малине Pi
- 10. Python машинная связь на малине pi
- 11. Регистрация ошибок python на малине pi
- 12. ошибка установки xively-python на малине pi
- 13. скрипт python заблокирован на малине pi 3
- 14. Проблемы с кодированием Python при запуске скрипта в малине Pi debian
- 15. USB-камера на малине pi
- 16. Ошибка при установке Подушка на малине Pi
- 17. Запуск сеанса SSH через скрипт python на малине pi
- 18. python overflowerror on long integer при запуске на 32-битной малине pi
- 19. Запустить скрипт Python при запуске (Arch Linux ARM на малине Pi)
- 20. Python при запуске системы
- 21. SWTBot становится очень медленным
- 22. Запрос MySQL становится медленным
- 23. Python IDLE становится медленным при очень большом вводе программы
- 24. Встраиваемый питон в C++ на малине pi
- 25. Симулятор становится очень медленным
- 26. Browserify + gulp становится медленным
- 27. Расчет Pi миллионам мест на малине PI
- 28. Многопоточная программа на малине PI
- 29. Настройка SSL на малине pi
- 30. UITableView становится медленным при переключении просмотров