Используйте Cython как конвертер Python в C

У меня есть огромные модули Python (+8000 строк). Они в основном имеют множество функций для взаимодействия с аппаратной платформой через последовательный порт путем чтения и записи в аппаратные регистры.

Это не численные алгоритмы. Таким образом, приложение просто считывает/записывает аппаратные регистры/память. Я использую эти библиотеки для написания собственных скриптов. В конце концов, мне нужно переместить все эти вещи для запуска во встроенном процессоре на моем оборудовании, чтобы иметь более тонкое управление, а затем я просто запускаю событие с ПК, а остальное - на оборудовании.

Поэтому мне нужно преобразовать их в C. Если у меня могут быть конвертированы мои скрипты в C с помощью автоматического инструмента, это спасло бы меня огромное время. Вот почему меня привлекли к Китону. Эффективность не важна, мои коды не являются числовыми скрещиваниями. Но сгенерированный код должен быть относительно небольшим, чтобы поместиться в моей ограниченной памяти (несколько сотен килобэтов).

Можно ли использовать Cython в качестве конвертера для моих пользовательских скриптов Python для C? Я предполагаю, что да, и в каком случае я могу использовать эти .c файлы для запуска в моем оборудовании? Я думаю, это не так, поскольку я должен иметь Cython в моем оборудовании, а также для их запуска. Но если просто создавать некоторые .c файлы, я могу пройти и сделать это автономным, так как код не использует многие функции Python, он просто использует его как быструю реализацию script.

Ответ 1

  • Да, по сути, это то, что делает Киот. Но...
  • Вам не нужен Cython, однако вам нужно libpython. Вы можете почувствовать, что он не использует многие функции Python, но я думаю, что если вы попробуете это, вы обнаружите, что это не так - вы не сможете отделить свою программу от ее зависимости от libpython, продолжая использовать язык Python.

Другим вариантом является PyPy, в частности переводная инструментальная цепочка, НЕ интерпретатор PyPy Python. Он позволяет вам перевести RPython, подмножество языка Python, в C. Если вы действительно не используете многие языковые функции или библиотеки Python, это может сработать.

PyPy в основном известен как альтернативная реализация Python, но он также представляет собой набор инструментов для компиляции динамических языков в различные формы. Это то, что позволяет реализовать PyPy Python, написанный на (R) Python, для машинного кода.

Если С++ доступен, Nuitka является компилятором Python для С++, который работает для обычного Python, а не только для RPython (что и есть shedskin и PyPy).

Ответ 2

Если С++ доступен для этой встроенной платформы, shed skin, он преобразует python в С++.