Maison  >  Article  >  développement back-end  >  Comment améliorer la vitesse d'exécution de Python

Comment améliorer la vitesse d'exécution de Python

(*-*)浩
(*-*)浩original
2019-06-15 16:34:508407parcourir

Quand on parle du langage le plus populaire actuellement, nous devons mentionner python. Cependant, bien que Python soit facile à utiliser, sa vitesse est un peu impressionnante. Comment utiliser une méthode simple pour accélérer Python à une vitesse presque comparable à C ?

Comment améliorer la vitesse d'exécution de Python

Aujourd'hui, parlons du bébé numba. Vous avez bien lu, c'est soit numpy, soit numba. (Apprentissage recommandé : Tutoriel vidéo Python)

Numba est un compilateur juste à temps pour Python, qui convient le mieux au code qui utilise des tableaux et des fonctions NumPy. ainsi que des boucles. La manière la plus courante d'utiliser Numba consiste à utiliser sa collection de décorateurs, qui peuvent être appliqués à vos fonctions pour demander à Numba de les compiler. Lorsqu'une fonction décorée Numba est appelée, elle est compilée en code machine pour une exécution « juste à temps », et tout ou partie de votre code peut alors s'exécuter à la vitesse native du code machine !

Face à un projet informatique, la chose la plus simple à laquelle on puisse penser est de coder directement, et enfin d'écrire un programme très long. Par conséquent, lorsqu’un problème survient, il faut souvent beaucoup de temps pour localiser le problème.

Il existe un moyen simple de résoudre ce problème, qui consiste à définir diverses fonctions et à diviser la tâche en plusieurs petites parties. Étant donné que chaque fonction n'est pas particulièrement complexe et peut être vérifiée à tout moment lors de son écriture, il est facile de localiser et de résoudre les problèmes une fois que des problèmes surviennent dans le programme principal concis. L'idée de la programmation orientée objet est basée sur les fonctions.

Après avoir écrit la fonction, vous pouvez également utiliser des décorateurs pour la rendre plus puissante. Le décorateur lui-même est une fonction, mais c'est une fonction de fonctions. Le but est d'augmenter la fonction de la fonction. Par exemple, définissez d'abord une fonction qui génère l'heure actuelle, puis définissez une fonction qui spécifie le format de l'heure. L'application de cette dernière fonction à la fonction précédente est un décorateur, qui est utilisé pour afficher l'heure actuelle dans un format spécifique.

> Avantages de Numba

1 Simple, souvent une seule ligne de code peut apporter des surprises

2 Elle a des effets miraculeux sur les boucles, qui sont souvent utilisées ; en science Ce qui limite la vitesse de calcul de Python, c'est la boucle

3 Compatible avec les packages de calcul scientifique couramment utilisés, tels que numpy, cmath, etc.;

5. Il ajustera automatiquement la précision pour garantir l'exactitude.

Comment utiliser la numba

Au vu des avantages de la numba évoqués ci-dessus, je vais les présenter un par un. Première importation de numba

import numba as nb

Il peut être accéléré avec une seule ligne de code, et il a un effet miraculeux sur les boucles

Parce que la fonction intégrée de numba elle-même est un décorateur, vous seulement vous devez l'ajouter devant la fonction que vous avez définie. Just @nb.jit(), c'est facile de commencer. Prenons comme exemple une fonction de sommation

# 用numba加速的求和函数@nb.jit()def nb_sum(a):
    Sum = 0
    for i in range(len(a)):
        Sum += a[i]
    return Sum# 没用numba加速的求和函数def py_sum(a):
    Sum = 0
    for i in range(len(a)):
        Sum += a[i]
    return Sum

pour tester la vitesse

import numpy as np
a = np.linspace(0,100,100) # 创建一个长度为100的数组

%timeit np.sum(a) # numpy自带的求和函数
%timeit sum(a) # python自带的求和函数
%timeit nb_sum(a) # numba加速的求和函数
%timeit py_sum(a) # 没加速的求和函数

Pour plus d'articles techniques liés à Python, veuillez visiter la colonne

Tutoriel Python

pour apprendre !

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn