Поддержание объекта Python при встраивании в C
Из-за рефакторинга / доработки на контроллере мне пришлось встроить интерпретатор Python в C-приложение. Теперь я могу вызывать функции Python и передавать / получать объекты в Python нормально.
Код Python является контроллером для робота (в настоящее время моделируется), теперь для его сравнения необходимо использовать некоторый код на языке C.
Ранее код Python создавал объекты, считывал датчики, запускал управляющий код и записывал выходные данные в двигатели. Все это, за исключением управляющего кода, теперь необходимо выполнить на языке C. Проблема, с которой я столкнулся, заключается в том, что объекты, созданные в функции init (в python), которые, когда я запускаю управляющий код, больше не существуют.
Каков наилучший способ решить эту проблему? Моя идея состояла в том, чтобы вернуть контроллеры из функции init и сохранить ссылки на них в C, передавая ссылку на контроллер каждый раз, когда он вызывается.
Спасибо за любую помощь.
1 ответ
Это может быть не тот ответ, который вам нужен, но есть способы работы с C и Python, кроме встраивания интерпретатора в приложение C.
А именно, почему бы тебе не сделать обратное? Создавать библиотеки C для Python? Вы можете контролировать общий поток вашего приложения на Python, что намного удобнее, и вызывать код на C, когда вы считаете нужным.
Опять же, я не отвечаю на ваш актуальный вопрос, поэтому не стесняйтесь меня игнорировать.