C'est un outil utilisé pour générer rapidement Outil de module d'extension Python (extension module)
sa syntaxe est un mélange de la syntaxe du langage python et de la syntaxe du langage c
il Il est plus facile d'écrire des modules d'extension python que swig
Peut-être direz-vous que swig peut générer des modules d'extension directement via les fichiers d'en-tête c, mais swig ne prend pas en charge les fonctions de rappel très bien,
De plus, si vous utilisez swig, dans de nombreux cas, vous devez écrire du code supplémentaire pour convertir les paramètres d'entrée en pythonobjets et convertir la sortie en objets python, par exemple, si vous encapsulez une fonction C Si les paramètres sont en entrée et en sortie, et s'il y a une fonction de rappel dans les paramètres de la fonction C,
, et en Cython, les types en C, comme int, float , long, char*, etc. seront tous automatiquement convertis en objets python si nécessaire, ou convertis des objets python en types C. Lorsque la conversion échoue, une exception sera levée . ce qui est le plus étonnant à propos de Cython
De plus, Cython prend également en charge les fonctions de rappel
En bref, si vous avez besoin d'écrire des modules d'extension Python, alors Cython est vraiment un bon outil
cython est installé sous linux :
1. Installation du package source :[blueelwang@pythontab ~]$ wget https://pypi.python.org/packages/b7/67/7e2a817f9e9c773ee3995c1e15204f5d01c8da71882016cac10342ef031b/Cython-0.25.2.tar.gz [blueelwang@pythontab ~]$ tar xzvf Cython-0.25.2.tar.gz [blueelwang@pythontab ~]$ cd Cython-0.25.2 [blueelwang@pythontab ~]$ python setup.py install
[blueelwang@pythontab ~]$ sudo pip install Cython --install-option="--no-cython-compile"
[blueelwang@pythontab ~]$ sudo apt-get install cython
def say_hello_to(name): print("Hello %s!" % name)
from distutils.core import setup from distutils.extension import Extension from Cython.Distutils import build_ext ext_modules = [Extension("hello", ["hello.pyx"])] setup( name = 'Hello world app', cmdclass = {'build_ext': build_ext}, ext_modules = ext_modules )
[blueelwang@pythontab ~]$ python setup.py build_ext --inplace
Object* fichier encapsulé)
4 Utilisez python pour appeler hello.so, et le fichier appelant est test.pyimport hello hello.say_hello_to("hi,cython!!")
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!