[PYTHON] Essayez Cython dans les plus brefs délais

introduction

Cet article est un mémorandum qui décrit le contenu minimum requis pour essayer une bibliothèque Python appelée Cython.

J'espère que cela aide les gens qui disent: "Cython semble être un moyen d'accélérer Python, mais je ne suis pas sûr de ce que c'est!"

Aperçu

N'ayez pas peur de mal comprendre

Cython = ** Un nouveau langage de programmation incroyablement similaire à Python pour créer des bibliothèques Python **

est.

Il existe de nombreuses autres façons de l'utiliser, mais je pense que ce niveau de reconnaissance est suffisant si vous l'essayez d'abord.

Flux jusqu'à l'utilisation de Cython

    1. Traitement d'écriture en Cython
  1. Traduire (transpiler) le code source en langage C
    1. Génération et bibliothèque de code source transpilé en langage C

Bonjour mec du monde

Essayons-le tout de suite.

Le minimum requis est de deux.

    1. Code écrit en Cython (hoge.pyx)

hoge.pyx


def tasu(a, b):
    return a + b

C'est très similaire à Python, c'est comme Python. En Cython, vous pouvez également définir des fonctions avec cdef et cpdef, et vous pouvez spécifier le type de ʻa et b`, mais allons-y sans aller plus loin car ce n'est qu'un essai.

  1. Code pour transpile & build (setup.py)

setup.py


from distutils.core import setup
from Cython.Build import cythonize

setup(ext_modules=cythonize("hoge.pyx"))

Il y a un sort magique qui ** ne ** pas ** le code Cython que j'ai écrit plus tôt.

Lorsque les deux ci-dessus sont prêts, transpilez et compilez avec la commande suivante.

python3 setup.py build_ext -i

Je pense que certains fichiers ont été générés, mais le hoge.c généré est un transpile de hoge.pyx en langage C. Il s'agit d'une bibliothèque importée de Python et utilisée par une personne comme hoge.cpython-36m-x86_64-linux-gnu.so.

Tout ce que vous avez à faire est d'importer hoge.cpython-36m-x86_64-linux-gnu.so et d'appeler la fonction que vous venez de créer.

>>> import hoge
>>> 
>>> print(hoge.tasu(1,2))

Il semble que Cython ne tire pas grand avantage de l'accélération à moins que vous ne sachiez comment l'utiliser et où l'utiliser, mais il est étonnamment facile de l'essayer.


c'est tout. Merci beaucoup.

Recommended Posts

Essayez Cython dans les plus brefs délais
Essayez de déchiffrer les données de connexion stockées dans Firefox
Programmation pour combattre dans le monde ~ 5-1
Programmation pour combattre dans le monde ~ 5-5,5-6
Programmer pour combattre dans le monde 5-3
Programmation pour combattre dans le monde - Chapitre 4
Dans la commande python, python pointe vers python3.8
Essayez d'introduire le thème sur Pelican
Essayez de calculer Trace en Python
Essayez de mettre des données dans MongoDB
Essayez d'extraire les mots-clés populaires dans COTOHA
Le moyen le plus rapide d'essayer EfficientNet
Programmation pour combattre dans le monde ~ 5-2
La façon la plus simple d'essayer PyQtGraph
Essayez de modéliser le rendement cumulatif du roulement dans le trading à terme
Essayez de résoudre l'itinéraire le plus court avec les données sociales Python + NetworkX +
Essayez de vous connecter à qiita avec Python
Essayez d'utiliser l'API Wunderlist en Python
Essayez d'utiliser la bande HL dans l'ordre
Essayez de faire face à la somme partielle
Essayez de reproduire l'add.at de NumPy avec Julia
Dans Jupyter, ajoutez IPerl au noyau.
Essayez le nouveau chaînage du planificateur dans PyTorch 1.4
Divers commentaires à écrire dans le programme
Essayez d'accéder à l'API Spotify dans Django.
Essayez de résoudre le problème du fizzbuzz avec Keras
Comment utiliser la bibliothèque C en Python
Connectez-vous à un serveur distant avec SSH
Premiers pas pour essayer Google CloudVision en Python
Essayez d'implémenter Oni Mai Tsuji Miserable avec python
Essayez d'ajouter la distorsion de l'objectif fisheye à l'image
Calculons en fait le problème statistique avec Python
3.14 π jour, alors essayez de sortir en Python
Essayez auto pour évaluer automatiquement Enum dans Python 3.6
Essayez de décomposer la procession du daimyo en Tucker
Essayez d'utiliser Blueprint avec Flask pour séparer les contrôleurs
Essayez de résoudre le diagramme homme-machine avec Python
Essayez d'utiliser l'API BitFlyer Ligntning en Python
Client de streaming Twitter à apprécier dans le terminal
Pour remplacer dynamiquement la méthode suivante en python
Comment essayer l'algorithme des amis d'amis avec pyfof
Dessinez des graphiques dans Julia ... Laissez les graphiques à Python
Conseils pour rédiger un aplatissement concis en python
Essayez de calculer RPN avec Python (pour les débutants)
Comment obtenir les fichiers dans le dossier [Python]
Essayez d'imiter le paramètre _method de Rails dans webapp2
[Introduction à l'algorithme] Trouvez l'itinéraire le plus court [Python3]
Essayez d'implémenter la méthode Monte Carlo en Python
Connectez-vous avec json en utilisant pygogo.
Essayez de simuler le mouvement du système solaire
Je veux afficher la progression en Python!
Essayez d'utiliser l'API DropBox Core avec Python
Essayez de publier sur Qiita pour la première fois
9 étapes pour devenir un expert en apprentissage automatique dans les plus brefs délais [Entièrement gratuit]
Essayez d'ajouter un module externe au poivre. Pour le moment, en demandes.
Essayez d'afficher la séquence de Fibonacci dans différentes langues comme pratique d'algorithme