Wenn Ihr Python-Programm zu langsam ist, können Sie die unten aufgeführten Tipps und Tricks befolgen -
Vermeiden Sie übermäßige Abstraktion, insbesondere in Form winziger Funktionen oder Methoden. Abstraktion führt tendenziell zu Indirektheit und zwingt den Interpreten zu mehr Arbeit. Wenn der Grad der Indirektion die Menge der geleisteten nützlichen Arbeit übersteigt, wird Ihr Programm langsamer
Wenn der Schleifenkörper sehr einfach ist, kann der Interpreter-Overhead der for-Schleife selbst einen großen Teil des Overheads ausmachen. Hier funktioniert die Kartenfunktion besser. Die einzige Einschränkung besteht darin, dass der Schleifenkörper von Map ein Funktionsaufruf sein muss.
Die chinesische Übersetzung vonSehen wir uns ein Schleifenbeispiel an
newlist = [] for word in oldlist: newlist.append(word.upper())
Wir können „map“ anstelle der obigen Schleife verwenden, um den Overhead zu vermeiden –
newlist = map(str.upper, oldlist)
Die Verwendung von Listenverständnissen verursacht weniger Overhead als for-Schleifen. Sehen wir uns das gleiche Beispiel an, das mithilfe von Listenverständnissen implementiert wurde -
newlist = [s.upper() for s in oldlist]
Generatorausdrücke wurden in Python 2.4 eingeführt. Diese gelten als die beste Alternative zu Schleifen, da sie den Aufwand vermeiden, die gesamte Liste auf einmal zu generieren. Stattdessen geben sie ein Generatorobjekt zurück, das Stück für Stück iteriert werden kann -
iterator = (s.upper() for s in oldlist)
Python greift effizienter auf lokale Variablen zu als auf globale Variablen. Wir können das obige Beispiel mithilfe lokaler Variablen selbst implementieren -
def func(): upper = str.upper newlist = [] append = newlist.append for word in oldlist: append(upper(word)) return newlist
Importanweisungen können einfach ausgeführt werden. Es ist oft sinnvoll, sie innerhalb von Funktionen zu platzieren, um ihre Sichtbarkeit einzuschränken und/oder die anfängliche Startzeit zu verkürzen. In einigen Fällen kann die wiederholte Ausführung von Importanweisungen die Leistung erheblich beeinträchtigen.
Dies ist eine bessere und schnellere Option, wenn Sie mehrere Zeichenfolgen mithilfe von Join verketten. Wenn jedoch nicht viele Zeichenfolgen vorhanden sind, ist es effizienter, den Operator „+“ für die Verkettung zu verwenden. Die Ausführung nimmt weniger Zeit in Anspruch. Schauen wir uns das anhand von zwei Beispielen an.
Verwenden Sie den +-Operator, um mehrere Zeichenfolgen zu verketten
Die chinesische Übersetzung vonWir werden nun viele Strings verketten und die Ausführungszeit mithilfe des Zeitmoduls −
überprüfenfrom 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
Verwenden Sie Join, um mehrere Zeichenfolgen zu verbinden
Die chinesische Übersetzung vonWir werden nun Join verwenden, um viele Zeichenfolgen zu verketten und die Ausführungszeit zu überprüfen. Wenn wir viele Zeichenfolgen haben, ist die Verkettung eine bessere und schnellere Option -
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
Das obige ist der detaillierte Inhalt vonMein Python-Programm ist zu langsam. Wie kann ich es beschleunigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!