Здравствуйте!
Для собственного пользования были написаны .cpp скрипты для вычислений в области алгебры, дискретной математики и т.д. Планируется написать веб-приложение на основе python-фреймворка Django (опыт пользования имеется). Вопрос следующего характера: как из django class-based view запустить .cpp скрипт с передачей параметров и возвратом результата вычислений? Сами скрипты написаны таким образом, чтобы в них можно было передать параметры через консоль разработчика Visual Studio (с использованием argv, ваш кэп).
C++ файлы с кодом (по крайней мере, их часть) имеет расширение .cpp. Да, ещё есть .h файлы (заголовочные), но мне бы научиться запускать .cpp из питона, с хэдерами разберусь.
Ну либо искать интерпретатор плюсов (вроде даже были такие), либо - что лучше - скомпилить в исполняемый файл и вызывать его через subprocess например.
Лично мне больше нравится второй вариант. Но получится ли в скомпиленный файл передавать параметры (как это делается в vs dev console)? Для справки: сервер на ubuntu.
Ariurn, ну естественно, VisualStudio просто запускает такой же исполняемый файл. На Ubuntu будешь компилить с помощью gcc, для этого его нужно установить: sudo apt install build-essential
компилить так: g++ main.cpp -O3
-O3 нужно для включения оптимизаций компилятора, будет эффективнее
и запускать полученный файл ./a.out option1 option2
Не забудь проверить, чтоб не было уязвимостей вроде переполнения буфера
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻ ҉, вот это решение мне очень нравится :) Но всё-таки хотелось спросить, что лучше: ваше решение или один из вариантов, предложенных в статье на Хабре ниже?
Есть еще один, безусловно более удобный для py-разработки, подход - это собрать модуль расширения питона. Для этого, конечно, нужно быть специалистом в разработке и сборке С++ проектов и быть хорошо знакомым с Python Module API, а это явно не про нашего автора вопроса.
Модуль расширения с точки зрения питона - это еще один обычный модуль, который импортируется обычным образом в обычный исходник питона.
Ariurn, Лучше решения из статьи.
Но это у вас практически готово, а то нужно еще делать и не факт, что получится, т.к. знаний в С/С++ у вас мало.
На самом деле все зависит от того, что делает код на С++. В статье об этом говорится.
Ariurn, статью не читал, лучше то, что предлагает Евгений Шатунов, именно так делают профессиональные библиотеки для питона, в которых важна скорость, но это сложнее и советую сначала сделать простой вариант с компиляцией, а уже потом, если будет желание, поковыряться с модулями.