Maison  >  Article  >  développement back-end  >  Mon programme Python est trop lent. Comment puis-je l'accélérer ?

Mon programme Python est trop lent. Comment puis-je l'accélérer ?

王林
王林avant
2023-09-11 17:01:02680parcourir

Mon programme Python est trop lent. Comment puis-je laccélérer ?

Si votre programme Python est trop lent, vous pouvez suivre les trucs et astuces ci-dessous -

Résumé

É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

Évitez les frais généraux de boucle

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 de

Exemple

est :

Exemple

Voyons 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)

Utiliser la compréhension de liste

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]

Expressions génératrices

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)

Variables locales

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

Relevé d'importation en frais généraux

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.

Chaîne de connexion

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 de

Exemple

est :

Exemple

Nous 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)

Sortie

0.003464221954345703

Utilisez Join pour connecter plusieurs chaînes

La traduction chinoise de

Example

est :

Example

Nous 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)

Sortie

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer