0% ont trouvé ce document utile (0 vote)
6 vues3 pages

Optimisation Python avec Numba

t

Transféré par

Bernard Gnazou
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
6 vues3 pages

Optimisation Python avec Numba

t

Transféré par

Bernard Gnazou
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Python & Numba

Générateur de site statique


Tests unitaires

Numba
Numba est une bibliothèque Python qui permet d'optimiser le code Python en le compilant en
code machine pour une exécution plus rapide. Elle est principalement utilisée pour accélérer les
calculs numériques intensifs, comme ceux qui sont couramment utilisés dans les domaines de la
science des données, de l'apprentissage automatique et de la modélisation scientifique.
Numba fonctionne en "juste-à-temps" (JIT), ce qui signifie qu'il compile le code Python en code
machine au moment où il est exécuté, plutôt que de le compiler à l'avance. Cela permet d'obtenir
des performances proches de celles du code compilé, tout en conservant la flexibilité et la lisibilité
du code Python.

Installer Numba
Pour utiliser Numba, vous devez d'abord l'installer dans votre environnement Python en utilisant la
commande "pip install numba". Vous pouvez ensuite utiliser l'annotation "@[Link]" pour
indiquer à Numba quelles fonctions du code doivent être compilées en code machine. Numba peut
également être utilisé avec d'autres bibliothèques Python pour accélérer des opérations
spécifiques, comme les calculs matriciels avec NumPy.
En général, Numba est une bibliothèque très utile pour accélérer le code Python qui e ectue des
calculs intensifs. Cependant, il est important de garder à l'esprit que la compilation en code
machine peut rendre le code moins lisible et plus di icile à déboguer, et qu'elle n'est pas toujours
la solution la plus adaptée à tous les cas d'utilisation.

Exemple d'utilisation
import numba
import numpy as np
import time

def sum_array_python(arr):
result = 0
for i in range([Link]):
result += arr[i]
return result

@[Link]
def sum_array(arr):

Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with [Link]
result = 0
for i in range([Link]):
result += arr[i]
return result

data = [Link](1000000)

# Comportement standard
start = [Link]()
sum_array_python(data)
print([Link]() - start)

# 1ère compilation prend plus de temps


start = [Link]()
sum_array(data)
print([Link]() - start)

# 100x plus rapide que le python standard


start = [Link]()
sum_array(data)
print([Link]() - start)

Voici ce que ca donne sur ma machine:

0.09061622619628906
0.15590143203735352
0.0009911060333251953

Impressionnant la di érence!

Dans cet exemple, la fonction "sum_array()" est annotée avec "@[Link]" pour indiquer à
Numba qu'elle doit être compilée en code machine. Lorsque la fonction est exécutée sans Numba,
elle est relativement lente en raison de la boucle "for" qui parcourt tous les éléments du tableau.
Lorsqu'elle est exécutée avec Numba, elle est beaucoup plus rapide car le code est compilé en code
machine et exécuté de manière plus e icace.

Cet exemple montre comment Numba peut être utilisé pour accélérer des fonctions qui e ectuent
des opérations sur des tableaux de données de manière séquentielle. Numba peut également être
utilisé pour accélérer des fonctions qui e ectuent des opérations sur des tableaux de manière
vectorisée (en utilisant l'annotation "@[Link]") ou générique (en utilisant l'annotation
"@[Link]").

Une liste de mots-clés couramment utilisés avec Numba :


@[Link] : cette annotation permet de déclarer une fonction qui doit être compilée en
code machine par Numba.
@[Link] : cette annotation permet de déclarer une fonction qui doit être compilée
en code machine par Numba et qui peut être utilisée pour e ectuer des opérations sur des
tableaux de données de manière vectorisée.

Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with [Link]
@[Link] : cette annotation permet de déclarer une fonction qui doit être
compilée en code machine par Numba et qui peut être utilisée pour e ectuer des opérations
sur des tableaux de données de manière vectorisée et générique (c'est-à-dire qu'elle peut
prendre en entrée des tableaux de di érentes tailles et formes).

Concurrents:
Cython : Cython est une bibliothèque Python qui permet de convertir du code Python en
code C pour une exécution plus rapide. Elle fonctionne en ajoutant des types statiques au
code Python, ce qui permet de générer du code C plus e icace. Cython est souvent utilisé
pour accélérer des fonctions qui e ectuent des opérations intensives sur des tableaux de
données, comme celles qui sont couramment utilisées dans les domaines de la science des
données et de la modélisation scientifique.
PyPy : PyPy est une implémentation alternative de Python qui utilise une technique de
compilation JIT (juste-à-temps) pour accélérer le code Python. Elle est conçue pour être
compatible avec les programmes Python existants et peut être utilisée comme une
alternative à l'interpréteur Python standard. PyPy est souvent utilisée pour accélérer des
programmes qui e ectuent des opérations intensives sur des données, comme les jeux et
les applications Web.
Pyston : Pyston est une autre implémentation alternative de Python qui utilise une
technique de compilation JIT pour accélérer

Générateur de site statique


Tests unitaires

Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with [Link]

Vous aimerez peut-être aussi