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

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

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

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

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

2 ответа

Решение
  1. Да, по сути, это то, что делает Cython. Но...
  2. Вам не нужен Cython, однако, вам нужно libpython, Вы можете почувствовать, что он не использует так много возможностей Python, но я думаю, что если вы попробуете это, вы обнаружите, что это неправда - вы не сможете отделить вашу программу от ее зависимости от libpython все еще используя язык Python.

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

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

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

Если C++ доступен для этой встроенной платформы, есть скин shed, он конвертирует python в C++.

Другие вопросы по тегам