Вызов функций Numpy в C с использованием Pybind11

#c #multithreading #numpy #pybind11 #python-extensions

#c #многопоточность #numpy #pybind11 #python-расширения

Вопрос:

После экспериментов с Pybind11 для создания расширений C для Python я надеялся написать разделы C для сложных в вычислительном отношении частей моего кода. В моем конкретном случае я хотел бы работать с массивами numpy и использовать смесь функций numpy и моего кода на C для ускорения.

Здесь я вижу способ работы с массивами numpy в C и видел, как вызовы функций numpy / scipy обрабатывались в других примерах путем вызова интерпретатора python для вызова функций. Для чего-то вроде numpy, который создается из кода C, возможно ли вызывать функции без вызова интерпретатора python и накладных расходов, или это подходящий способ вызова функций numpy в pybind11? Если необходимо вызвать этот интерпретатор, можно ли использовать многопоточность C (pthreads) для распараллеливания кода, вызываемого интерпретатором python, или код обязательно использует один и тот же интерпретатор python и, следовательно, GIL?

Комментарии:


1. API NumPy C описан здесь . Однако в C реализованы только основные типы numpy и некоторые основные функции, и не все функции доступны через API. В большинстве случаев, если вы действительно хотите вызывать такие вещи из C , вам лучше использовать Eigen (или что-то еще).