В моей области есть библиотека, написанная на языке C. Производительность и точность этой библиотеки сделали ее незаменимой. Однако из-за использования языка C большинству людей трудно работать с этим пакетом.
Использование этого пакета требует некоторого кодирования на C;Вы должны включить библиотеку, а затем вы можете использовать некоторые конкретные структуры данных и функции, определенные в библиотеке. Например, как показано в приведенном ниже коде, необходимо включить библиотеку, инициализировать ее в главном, добавить эксперимент и определить новые переменные для вычисления хи-квадрат:
#include <stdio.h> /* Some regular libraries */
....
#include <opr/opr.h> /* the mentioned library */
int main(int argc, char *argv[])
{
/* Initialize That library */
oprInit(argv[0]);
/* Initialize the experiment */
oprAddExperiment("experiment number 1");
/* Initialize parameter vector(s) */
opr_params hypothesis_values = oprAllocer();
opr_params theory_values = oprAllocer();
oprDefine(hypothesis_values,theta12,theta13,theta23,deltacp,sdm,ldm);
oprDefine(theory_values,theta12,theta13,theta23,deltacp,sdm,ldm);
...
for(y=0.0; y<10.0 ;y=y+0.2)
{
/* updating the values in each loop */
/* calculation Chi squared */
res=opr_chi2(hypothesis_values, theory_values);
...
}
Что я намерен сделатьdo создает интерфейс Python, создавая переводчик, который создает файл C и запускает его, т. е. если пользователь набрал import opr
, код создает файл C с #include <opr/opr.h>
, основной функцией и командой инициализации.
Я знаю, что подобные решения типа «голова за головой» не самые лучшие, поэтому мне было интересно, есть ли другой чистый и оптимальный способ использования этой библиотеки в скрипте Python?
Я слышал, что python - хороший язык склеивания, а также слышал, что числовые пакеты, такие как numpy, используют некоторые библиотеки C или FORTRAN, как я могу использовать эту возможность склеивания или выполнять аналогичную работу, как numy?
Как я уже упоминал ранее, производительность библиотеки уникальна, и мы не намерены изобретать колесо, написав его на языке Python, если только возможное улучшение по сравнению с реальным кодом не может быть сделано.