Cython





Cython désigne à la fois une extension du langage Python et un compilateur C.
En fait d’extension, Cython ne rajoute ou ne modifie pas grand chose à la syntaxe python et les programmes écrits en pur python sont compilables.
Le mode d’emploi de cython est le suivant

  • Les fonctions en cy(py)thon sont sauvegardées dans un fichier avec l’extension .pyx, pour le distinguer des autres modules .py.
  • Un fichier .c est créé à partir du fichier .pyx, en lançant le programme setup.py. Pour ce faire, le nom du fichier est passé en argument de la fonction setup.
  • La fonction peut être importée, comme une fonction python ordinaire

 

Installation de cython

 
Le plus simple est de télécharger la version d’Anaconda correspondant à votre version de Python (Anaconda 2 ou 3), si vous ne l’avez pas encore fait. Elle vous permet aussi d’avoir accès aux packages numpy, scipy, matplotlib… (voir § ‘Package numpy’)
Dans votre répertoire de travail, taper en ligne de commande
 

 
La deuxième étape consiste à créer, dans le répertoire de travail, un fichier appelé setup.py, qui contiendra les lignes suivantes
 

 
La dernière étape, pour permettre à setup de convertir le fichier .pyx en .c, est de télécharger une version récente de Microsoft Visual Studio (2015 et plus récentes)

Mode d’emploi

 
La mise en pratique est simple: le code à compiler est écrit dans le module .pyx, par exemple stats.pyx. Le fichier setup.py est modifié en conséquence
 

 
Puis, en ligne de commande,

 
Vous pouvez inclure plusieurs fichiers .pyx parmi les arguments de setup.
 
Pour éviter d’avoir à retaper la commande python setup.py build_ext –inplace à chaque mise à jour, on peut utiliser un éditeur tel que PyCharm, qui permet d’enregistrer cette commande comme fonctionnalité externe (external tool): pour cela,
Settings > Tools > External tools > bouton + > une fenêtre Create Tool apparaît: renseignez les rubriques comme indiqué ci-dessous
 

 
Après chaque mise à jour du fichier .pyx,
Tools (dans la barre de menus) > External Tolls > cython compile

Exemple: on souhaite, en plus des fonctions codées dans stats.pyx, inclure des fonctions financières, comme celle ci-dessous qui calcule le prix (simplifié) d’un contrat d’option pour cinq valeurs de volatilités. On choisit d’écrire le code correspondant dans un module à part appelé fin_prices.pyx.

 

 

  • Mise à jour de setup.py
     
  •  

  • Compilation du fichier
    Tools > External Tools > cython compile
  •  

  • Import du module contenant la fonction