Maison  >  Article  >  développement back-end  >  Comment effectuer une optimisation des performances sur Python

Comment effectuer une optimisation des performances sur Python

伊谢尔伦
伊谢尔伦original
2017-06-28 13:33:151331parcourir

Les critiques de Python prétendent que Python est inefficace et lent, mais ce n'est pas le cas : essayez ces 6 conseils pour accélérer vos applications Python.

Python est un langage très sympa car très peu de code Python peut faire beaucoup de choses en peu de temps, et Python peut facilement prendre en charge le multitâche et le multitraitement.

py

1. Les codes clés peuvent dépendre des packages d'extension

Python simplifie de nombreuses tâches de programmation, mais ce n'est pas le cas. Ils ne fournissent pas toujours les meilleures performances pour les tâches très critiques. L'utilisation de packages d'extension C, C++ ou en langage machine pour effectuer des tâches critiques peut considérablement améliorer les performances. Ces packages dépendent de la plateforme, ce qui signifie que vous devez utiliser des packages spécifiques à la plateforme que vous utilisez. En bref, cette solution offre une certaine portabilité des applications en échange de performances que vous ne pouvez gagner qu'en programmant directement sur l'hôte sous-jacent. Les packages d'extension suivants que vous pouvez envisager d'ajouter à votre bibliothèque d'extensions personnelle :

Cython
PyInlne
PyPy
Pyrex

Ces packages ont différentes fonctions et méthodes d'exécution. Par exemple, Pyrex permet à Python de gérer facilement et efficacement certaines tâches de mémoire ; PyInline vous permet d'utiliser directement le code C dans les applications Python. Bien que le code en ligne soit compilé séparément, si vous pouvez utiliser le code C efficacement, il peut être utilisé. en même temps. Un seul endroit pour tout.

2. Utilisez le tri par mots clés

Il existe de nombreux codes Python anciens qui passeront plus de temps à créer une fonction de tri personnalisée. La meilleure façon de trier est d'utiliser des mots-clés et la méthode sort() par défaut, jetez un œil à l'exemple suivant :

import operator
somelist = [(1, 5, 8), (6, 2, 4), (9, 7, 5)]
somelist.sort(key=operator.itemgetter(0))
somelist
#Output = [(1, 5, 8), (6, 2, 4), (9, 7, 5)]
somelist.sort(key=operator.itemgetter(1))
somelist
#Output = [(6, 2, 4), (1, 5, 8), (9, 7, 5)]
somelist.sort(key=operator.itemgetter(2))
somelist
#Output = [(6, 2, 4), (9, 7, 5), (1, 5, 8)],

La liste de chaque cas est triée selon l'index que vous choisissez comme mot-clé argument, Cette méthode est également applicable à la chaîne et au tri numérique.

3. Optimisation des boucles

Chaque langage de programmation met l'accent sur l'optimisation des instructions de boucle, et Python est la même chose. Bien que vous puissiez compter sur une multitude de techniques pour accélérer l'exécution des boucles, une méthode que les développeurs négligent souvent consiste à éviter d'utiliser des chaînes en pointillés à l'intérieur de la boucle. Pour l'exemple suivant :

lowerlist = ['this', 'is', 'lowercase']
upper = str.upper
upperlist = []
append = upperlist.append
for word in lowerlist:
    append(upper(word))
    print(upperlist)
    #Output = ['THIS', 'IS', 'LOWERCASE']

Chaque fois que str.upper est appelé, Python trouvera la valeur de cette méthode. Mais si vous mettez le résultat de l'évaluation dans une variable , vous pouvez améliorer les performances du programme. La clé est de réduire le nombre de boucles exécutées dans Python, car Python est plus lent à analyser ces instances.

4. Utilisez la nouvelle version

Quiconque recherche des informations sur Python en ligne trouvera d'innombrables informations sur la migration des versions de Python. Habituellement, chaque version de Python a été optimisée et améliorée par rapport à la version précédente pour rendre Python plus rapide. Le facteur limitant est de savoir si votre bibliothèque préférée a été améliorée pour la nouvelle version de Python.

Lorsque vous utilisez une nouvelle bibliothèque de fonctions et obtenez une nouvelle version de Python, vous devez vous assurer que le code peut toujours s'exécuter, vérifier l'application et corriger les différences.

Cependant, si vous vous assurez simplement que l'application peut fonctionner sur la nouvelle version, vous risquez de manquer la mise à jour des nouvelles fonctionnalités. Une fois que vous aurez apporté des améliorations, configuré votre application sous la nouvelle version, vérifié les zones à problèmes et donné la priorité aux mises à jour avec de nouvelles fonctionnalités, les utilisateurs verront des améliorations de performances encore plus importantes par rapport aux mises à niveau précédentes.

5. Essayez différentes méthodes de programmation

Chaque fois que vous créez une application, utilisez la même méthode de programmation. Dans certains cas, le programme s'exécutera plus lentement. lent. Faites quelques petites expériences pendant l’analyse. Par exemple, lors de la gestion des éléments de données dans un dictionnaire, vous pouvez utiliser une méthode sûre pour déterminer si l'élément de données existe déjà et doit le mettre à jour, ou vous pouvez ajouter directement l'entrée, puis gérer le cas où l'élément n'existe pas à tous.

n = 16
myDict = {}
for i in range(0, n):
    char = 'abcd'[i%4]
    if char not in myDict:
        myDict[char] = 0
        myDict[char] += 1
        print(myDict)

Le code ci-dessus s'exécutera généralement plus rapidement lorsque myDict est vide. Mais lorsque myDict est déjà rempli de données, il existe une meilleure façon de choisir :

n = 16
myDict = {}
for i in range(0, n):
    char = 'abcd'[i%4]
    try:
        myDict[char] += 1
    except KeyError:
        myDict[char] = 1
    print(myDict)

Dans les deux cas, sortie {'d' : 4, 'c' : 4, 'b' : 4, 'a' : 4}, la seule différence est la manière dont le résultat est obtenu. Sortir des sentiers battus et créer de nouvelles techniques de programmation peuvent accélérer l’exécution de vos programmes.

6. Compilateur croisé

Les développeurs oublient parfois que l'ordinateur ne reconnaît aucun langage d'application actuel, il ne reconnaît que le code machine. Pour exécuter un programme, une application est nécessaire pour convertir le code lisible par l’homme en code compréhensible par l’ordinateur. Lorsque vous écrivez un programme dans un langage, tel que Python, puis que vous l'exécutez dans un autre langage, tel que C++, cela a du sens du point de vue des performances. Cela dépend de ce que vous souhaitez faire avec l'application et des ressources que le système hôte peut fournir.

Un compilateur croisé intéressant, Nuitka, peut convertir Python en code C++. Le résultat est que vous pouvez exécuter l'application en mode natif au lieu de vous fier à l'interpréteur. En fonction de la plateforme et de la tâche, vous constaterez peut-être des améliorations significatives des performances.

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