J'ai essayé d'utiliser SWIG. Je me souviens de l'avoir utilisé pour l'analyse morphologique avec Human auparavant, mais je ne l'ai pas étudié correctement, alors j'ai fait une note pour moi-même.
Manuel http://www.swig.org/Doc1.3/Python.html#Python_nn4
Suivez le LISEZ-MOI pour l'installation.
$./configure
$make
$su
$make install
Une fois l'installation terminée, jouez avec l'exemple du manuel.
Le contenu du fichier .i http://blog.livedoor.jp/yoshichi9/archives/21911908.html参考
module Nom du module
%{
inclure le nom du fichier d'en-tête
%}
Énumération des fonctions(Ou.fichier h)
#define(Définition de macro, etc.)
Il semble.
Maintenant, créons un module d'extension qui renvoie des valeurs qui suivent une distribution normale.
Tout d'abord, préparez divers fichiers source c.
normaldist.h
double normal_distribution(double myu, double sigma, double x);
normaldist.c
#include "normaldist.h"
#include <math.h>
double normal_distribution(double myu, double sigma, double x){
double d;
double coefficient, in_exp;
coefficient = sqrt(2 * M_PI * sigma); //coefficient
in_exp = exp( -pow( x - myu, 2 ) / (2 * sigma )); //Le gars sur l'épaule de l'exp
d = in_exp / coefficient;
return d;
}
Puis le fichier .i pour swig
normaldist.i
%module normaldist
%{
#define SWIG_FILE_WITH_INIT
#include "normaldist.h"
#include <math.h>
%}
double normal_distribution(double myu, double sigma, double x);
最後にsetup.py
setup.py
from distutils.core import setup, Extension
module1 = Extension('_normaldist',
sources = ['normaldist_wrap.c', 'normaldist.c'])
setup (name = 'normaldist',
version = '1.0',
description = 'This is a normaldist package',
ext_modules = [module1],
py_modules = ["normaldist"],)
Tout ce que vous avez à faire est de taper les commandes dans l'ordre.
$swig -python normaldist.i
$python setup.py build_ext --inplace
Il devrait y avoir _normaldist.so dans le même répertoire.
Recommended Posts