Python Als dynamische Auslegungsprüfung kann die Laufgeschwindigkeit langsamer sein als die statische Kompilierungssprache wie C. Durch bestimmte Techniken und Strategien kann die Leistung der Python -Code jedoch erheblich verbessert werden. In diesem Artikel wird erläutert, wie der Python -Code optimiert wird, damit er schneller und effizienter ausgeführt wird, und das timeit
-Modul von Python verwendet, um den Code genau zu messen, um die Zeit auszuführen.
<:> Hinweis: standardmäßig wird das Modul den Code eine Million Mal wiederholt, um die Genauigkeit und Stabilität des Messergebnisses zu gewährleisten.
timeit
Beispielcode (mit
Funktionsausführungszeit): timeit
print_hi
<code class="language-python">import timeit def print_hi(name): print(f'Hi, {name}') if __name__ == '__main__': t = timeit.Timer(setup='from __main__ import print_hi', stmt='print_hi("leapcell")') print(t.timeit())</code>
Das bietet einen hohen Timer im Modul, das zum Messen eines kurzen Zeitintervalls geeignet ist. Zum Beispiel:
time
I. I/O -Dense -Betriebsoptimierung time.perf_counter()
<code class="language-python">import time start_time = time.perf_counter() # ...你的代码逻辑... end_time = time.perf_counter() run_time = end_time - start_time print(f"程序运行时间: {run_time} 秒")</code>
Die Eigenschaften sind wie folgt:
Wartezeit:
Wenn das Programm den E/A -Betrieb ausführt Blockierung.
CPU -Auslastung:
> I/O -Dense -Betriebsoptimierungsmethode: print
<code class="language-python">import time import timeit def print_hi(name): print(f'Hi, {name}') return if __name__ == '__main__': start_time = time.perf_counter() t = timeit.Timer(setup='from __main__ import print_hi', stmt='print_hi("leapcell")') t.timeit() end_time = time.perf_counter() run_time = end_time - start_time print(f"程序运行时间: {run_time} 秒")</code>
print
print_hi('xxxx')
asynchrones E/O:
<code class="language-python">def print_hi(name): return</code>
Polster: Verwenden Sie den Puffer, um Daten vorübergehend zu speichern, um die Häufigkeit von E/A -Vorgängen zu verringern.
Parallele Verarbeitung:
Führen Sie parallel mehrere E/A -Vorgänge durch, um die Geschwindigkeitsverarbeitungsgeschwindigkeit der Gesamtdaten zu verbessern.asyncio
<code class="language-python">import timeit def print_hi(name): print(f'Hi, {name}') if __name__ == '__main__': t = timeit.Timer(setup='from __main__ import print_hi', stmt='print_hi("leapcell")') print(t.timeit())</code>
<.> 2. Verwenden Sie die Generatoroptimierung:
<code class="language-python">import time start_time = time.perf_counter() # ...你的代码逻辑... end_time = time.perf_counter() run_time = end_time - start_time print(f"程序运行时间: {run_time} 秒")</code>
Drei, vermeiden Sie Zeichenfolge, verwenden Sie
join()
Methoden verbinden die Zeichenfolge effizient, insbesondere wenn es sich um eine große Anzahl von String handelt, die schneller als
schneller formatieren und Speicher speichern. join()
zum Beispiel:
%
<code class="language-python">import time import timeit def print_hi(name): print(f'Hi, {name}') return if __name__ == '__main__': start_time = time.perf_counter() t = timeit.Timer(setup='from __main__ import print_hi', stmt='print_hi("leapcell")') t.timeit() end_time = time.perf_counter() run_time = end_time - start_time print(f"程序运行时间: {run_time} 秒")</code>
anstelle des Zyklus join()
<code class="language-python">def print_hi(name): return</code>
Zyklus.
map()
herkömmliche Zyklusmethode:
map()
Verwenden Sie for
Funktion:
5. Wählen Sie die richtige Datenstruktur
<code class="language-python">def fun1(): list_ = [] for i in range(100): list_.append(i)</code>
Auswählen der geeigneten Datenstruktur ist wichtig, um die Effizienz der Python -Code zu verbessern. Die Effizienz der Wörterbuchsuche ist höher als die Liste (insbesondere unter großem Datenvolumen), aber wenn die Menge der kleinen Daten das Gegenteil ist. Wenn Sie viele Elemente häufig und gelöscht haben, sollten Sie überlegen. Wenn Sie häufig suchen, sollten Sie die map()
zwei -Punkte -Suche verwenden.
<code class="language-python">def fun1(): list_ = [i for i in range(100)]</code>
unnötige Funktionsaufrufe reduzieren, mehrere Vorgänge verschmelzen und die Effizienz verbessern.
sieben, vermeiden Sie unnötige Einführung collections.deque
bisect
unnötiges Modul importieren und die Kosten reduzieren.
8. Vermeiden Sie die Verwendung globaler Variablen
Legen Sie den Code in die Funktion ein, die normalerweise die Geschwindigkeit erhöhen kann.neun, vermeiden Sie Modul- und Funktionsattributzugriff
Verwenden Sie , um die Kosten des Attributzugriffs zu vermeiden.
zehn, reduzieren Sie die Berechnung im inneren Zyklus
Berechnen Sie die Werte, die im Voraus im Voraus berechnet werden können, um die doppelten Berechnungen zu reduzieren.
(Hier ist eine ausgelassene Einführung in die Leapcell -Plattform, da sie nichts mit der Python -Code -Leistungsoptimierung zu tun hat)
Bitte beachten Sie, dass die oben genannten Optimierungsmethoden nicht immer anwendbar sind und die entsprechende Optimierungsstrategie gemäß der spezifischen Situation ausgewählt werden muss. Leistung und Testen des Codes finden Sie die effektivste Optimierungslösung.
Das obige ist der detaillierte Inhalt vonPython Performance Tipps, die Sie wissen müssen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!