Ich werde einen Lightning Talk über Python bei der Arbeit haben, also werde ich etwas schreiben, das in ungefähr 5 Minuten gelesen werden kann. Das Gesprächsthema lautet "Wissen, um mit Python zu beschleunigen". ** Dies ist kein Artikel, der Python auflöst. ** ** **
Dieser Artikel ist bestimmt für:
Wie der Titel schon sagt, wenn Sie mit Python beschleunigen möchten, schreiben Sie nicht Python (so viel wie möglich). Der Zweck dieses Artikels besteht darin, das Schreiben von Python zu reduzieren und die Verarbeitungsgeschwindigkeit zu erhöhen.
Jetzt ist ** Python eine langsame Sprache ** im Vergleich zu C ++ und Java. Die Langsamkeit von Python wird in verschiedenen Artikeln erwähnt, wie zum Beispiel:
Zusammenfassend wird Python hauptsächlich aus folgenden Gründen als langsam angesehen:
Häufig als schwer angesehene Aufgaben wie maschinelles Lernen und Bildverarbeitung werden jedoch aktiv mit Python ausgeführt. Warum laufen diese Prozesse mit einer Geschwindigkeit ab, die praktisch ist? Das liegt daran, dass ** der größte Teil der Verarbeitung nicht mit Python geschrieben wird **.
Mit anderen Worten, wenn Sie die Verarbeitungsgeschwindigkeit von Python erhöhen möchten, führen Sie keine umfangreiche Verarbeitung in Python durch, sondern überlassen Sie die in C ++ usw. geschriebenen Standardfunktionen und Bibliotheken.
Schauen Sie sich die beiden folgenden Funktionen an.
fastCode ()
ist eine Funktion, mit der Sie schnell ausführen können. slowCode ()
ist eine langsame Funktion.
import numpy as np
#Schneller Code
def fastCode():
#Liste wird in Listennotation deklariert
list1 = [ i for i in range(0,10000)]
list2 = [ i for i in range(-10000,0)]
#Verwenden Sie nach Möglichkeit Standardfunktionen
listSum = sum(list1)
#Verwenden Sie numpy, um eine große Anzahl von Berechnungen in eine Matrixformel umzuwandeln
array1 = np.array(list1)
array2 = np.array(list2)
#Fügen Sie alle Elemente von Array1 und Array2 hinzu
# [0, 1, 2, ...] + [-100000, -99999, -99998, ...]
# >> [-100000, -99998, -99996, ...]
array3 = array1 + array2
#Multiplizieren Sie alle Elemente von Array1 und Array2
# [0, 1, 2, ...] * [-100000, -99999, -99998, ...]
# >> [0, -99999, -199996, ...]
array4 = array1 * array2
#Langsamer Code
def slowCode():
#Erstellen Sie eine Liste mit Anhängen
list1 = []
for i in range(0,10000):
list1.append(i)
list2 = []
for i in range(-10000,0):
list2.append(i)
#Berechnen Sie die Summe, indem Sie mit der for-Anweisung drehen, ohne die Standardfunktion zu verwenden
listSum = 0
for value in list1:
listSum += value
#Führen Sie viele Berechnungen mit einer for-Anweisung durch
list3 = []
list4 = []
for i , value in enumerate(list1):
list3.append(value + list2[i])
list4.append(value * list2[i])
Sie können sehen, dass fastCode ()
die Verarbeitung Standardfunktionen und -bibliotheken anvertraut und kurz codiert werden kann, während slowCode ()
die Verarbeitung selbst mit der for-Anweisung beschreibt. Ich glaube du kannst.
Die tatsächlichen Verarbeitungsgeschwindigkeiten sind wie folgt.
Funktion | Anzahl der Zeilen ohne Kommentare | Ausführungsgeschwindigkeit(Durchschnitt von 100 Läufen) |
---|---|---|
fastCode() | 7 Zeilen | 0.00207[sec] |
slowCode() | 14 Zeilen | 0.00430[sec] |
Standardfunktionen und -bibliotheken bestehen aus ** kompilierten Binärdateien **, die in C / C ++ geschrieben sind. Indem sie die Verarbeitung übernehmen, können auch schwere Aufgaben mit hoher Geschwindigkeit verarbeitet werden. Unter dem Gesichtspunkt der "Beschleunigung" ist Python sozusagen eine ** Sprache für die einfache Verwendung schneller Bibliotheken **.
Wenn Sie den Prozess in Python beschleunigen möchten, verwenden Sie die folgenden Techniken, um den in Python geschriebenen Prozess zu minimieren.
--Verwenden Sie Standardfunktionen und Bibliotheken, die in Hochgeschwindigkeits-C / C ++ geschrieben sind
Es gibt viele andere Möglichkeiten, Python zu beschleunigen, als die hier genannten. Ich denke jedoch, dass dies das erste ist, was Sie beim Beschleunigen mit Python beachten sollten. Wenn Sie mehr Geschwindigkeit benötigen, beginnen wir mit Ihrer eigenen Bibliothek, der Vorreferenz von Funktionen, Cython, Numba usw.
Warum ist Python so langsam? | POSTD Ist die Python for-Anweisung langsam? --atsuoishimotos Tagebuch Geschwindigkeitsvergleich von Python, Java, C ++ - Qiita [Einführung in die Python C-API] Erstellen Sie ein Erweiterungsmodul in C / C ++ und rufen Sie es in Python -Part 1- auf Python-Tipps für die Beschleunigung - Tagebuch eines Freizeitingenieurs
Recommended Posts