Существует несколько вопросов о том, как «как» вызывать код C C++ из Python. Но я хотел бы понять, что именно происходит, когда это делается, и что касается производительности. Какова теория внизу? Некоторые вопросы, на которые я надеюсь получить ответ, понимают принцип:Как работает вызов C или C++ из python?
При рассмотрении обрабатываемых данных (особенно больших данных) (например, 2 ГБ), которые необходимо передать с питона на C/C++, а затем обратно. Как передаются данные с python на C при вызове функции? Как результат передается после завершения функции? Все ли выполнено в памяти или UNIX/TCP сокеты или файлы, используемые для передачи данных? Есть ли какой-либо перевод и копирование (например, для преобразования типов данных), мне нужна память объемом 2 ГБ для хранения данных на python и дополнительной памяти + -2 ГБ, чтобы иметь C-версию данных, переданных функции C? Выполняют ли код C и код Python в разных процессах?
2 ГБ данных для передачи. Файлы могут быть лучшим вариантом. – Pawan
Зависит от того, как именно вы это делаете. Потенциально данные могут совместно использоваться в одном процессе без копирования, если вы используете модуль ctypes Python для вызова кода C/C++ в общей библиотеке или DLL. Вы также можете встроить интерпретатор Python в свое приложение C/C++ и поделиться им с помощью модуля расширения Python. Или вы можете сделать это, как вы описали с отдельными процессами и сокетами, если хотите. –