Maison > Article > développement back-end > Mon programme Python est trop lent. Comment puis-je l'accélérer ?
Si votre programme Python est trop lent, vous pouvez suivre les trucs et astuces ci-dessous -
Évitez les abstractions excessives, notamment sous la forme de minuscules fonctions ou méthodes. L'abstraction a tendance à créer une indirection et à obliger l'interprète à faire plus de travail. Si le niveau d'indirection dépasse la quantité de travail utile effectué, votre programme ralentira
Si le corps de la boucle est très simple, la surcharge de l'interpréteur de la boucle for elle-même peut représenter une grande partie de la surcharge. C'est là que la fonction map fonctionne mieux. La seule restriction est que le corps de la boucle de map doit être un appel de fonction.
La traduction chinoise deVoyons un exemple de boucle
newlist = [] for word in oldlist: newlist.append(word.upper())
Nous pouvons utiliser la carte au lieu de la boucle ci-dessus pour éviter les frais généraux−
newlist = map(str.upper, oldlist)
L'utilisation des compréhensions de liste nécessite moins de temps système que les boucles for. Voyons le même exemple implémenté à l'aide des compréhensions de liste -
newlist = [s.upper() for s in oldlist]
Les expressions génératrices ont été introduites dans Python 2.4. Celles-ci sont considérées comme la meilleure alternative aux boucles car elles évitent la surcharge liée à la génération de la liste entière en une seule fois. Au lieu de cela, ils renvoient un objet générateur qui peut être itéré petit à petit -
iterator = (s.upper() for s in oldlist)
Python accède aux variables locales plus efficacement que les variables globales. Nous pouvons implémenter l'exemple ci-dessus en utilisant les variables locales elles-mêmes -
def func(): upper = str.upper newlist = [] append = newlist.append for word in oldlist: append(upper(word)) return newlist
Les instructions d'importation peuvent être facilement exécutées. Il est souvent utile de les placer à l’intérieur de fonctions pour limiter leur visibilité et/ou réduire le temps de démarrage initial. Dans certains cas, l'exécution répétée d'instructions d'importation peut avoir un impact important sur les performances.
Il s'agit d'une option meilleure et plus rapide lors de la concaténation de plusieurs chaînes à l'aide de Join. Cependant, lorsqu’il n’y a pas beaucoup de chaînes, il est plus efficace d’utiliser l’opérateur + pour la concaténation. L'exécution prend moins de temps. Regardons cela avec deux exemples.
Utilisez l'opérateur + pour concaténer plusieurs chaînes
La traduction chinoise deNous allons maintenant concaténer plusieurs chaînes et vérifier le temps d'exécution à l'aide du module time −
from time import time myStr ='' a='gjhbxjshbxlasijxkashxvxkahsgxvashxvasxhbasxjhbsxjsabxkjasjbxajshxbsajhxbsajxhbasjxhbsaxjash' l=[] # Using the + operator t=time() for i in range(1000): myStr = myStr+a+repr(i) print(time()-t)
0.003464221954345703
Utilisez Join pour connecter plusieurs chaînes
La traduction chinoise deNous allons maintenant utiliser Join pour concaténer plusieurs chaînes et vérifier le temps d'exécution. La concaténation est une option meilleure et plus rapide lorsque nous avons beaucoup de chaînes -
from time import time myStr ='' a='gjhbxjshbxlasijxkashxvxkahsgxvashxvasxhbasxjhbsxjsabxkjasjbxajshxbsajhxbsajxhbasjxhbsaxjash' l=[] # Using the + operator t=time() for i in range(1000): l.append(a + repr(i)) z = ''.join(l) print(time()-t)
0.000995635986328125
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!