Schreiben Sie Python nicht, wenn Sie es mit Python beschleunigen möchten

Einführung

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. ** ** **

Wer ist das Ziel dieses Artikels?

Dieser Artikel ist bestimmt für:

Sofortiger Abschluss

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.

Python ist in erster Linie langsam

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 **.

Was meinst du

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 **.

Zusammenfassung

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

Schließlich

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.

Referenz

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

Schreiben Sie Python nicht, wenn Sie es mit Python beschleunigen möchten
Unverzichtbar, wenn Sie Python verwenden! Wie man Numpy benutzt, um Berechnungen zu beschleunigen!
[TensorFlow] Wenn Sie TensorBoard ausführen möchten, installieren Sie es mit pip.
Ich möchte mit Python in eine Datei schreiben
Wenn Sie awsebcli in CircleCI aufnehmen möchten, geben Sie die Python-Version an
Zwei Tools zur Dokumentenerstellung, die Sie unbedingt verwenden möchten, wenn Sie Python schreiben
So schreiben Sie Umgebungsvariablen, die Sie nicht in [GitHub] Python einfügen möchten
[OpenCV] Wenn Sie überprüfen möchten, ob es mit imread richtig gelesen wird
Schreiben Sie mit Python in csv
Für diejenigen, die Python mit vim schreiben möchten
Wenn Sie einen Discord-Bot mit Python erstellen möchten, verwenden wir ein Framework
Wenn Sie nicht wissen, wie Sie das gewünschte Diagramm mit matplotlib zeichnen sollen, können Sie sich die Galerie bequem ansehen
[Python] Wenn Sie plötzlich ein Anfrageformular erstellen möchten
Wenn Sie TinderBot in Python schreiben, kann sie das tun
Numba als Python zu beschleunigen
[Python] Mit Python in eine CSV-Datei schreiben
Schön dich mit Python zu treffen
Beschleunigen Sie Python mit numba grob
So beschleunigen Sie Python-Berechnungen
Ich möchte mit Python debuggen
Wenn Sie Datenwissenschaftler werden möchten, beginnen Sie mit Kaggle
Was tun, wenn Sie pyaudio nicht mit pip #Python installieren können?
Ich möchte wissen, ob Sie Python auf Mac ・ Iroha installieren
Wenn Sie einer Variablen in Python einen CSV-Export zuweisen möchten
Ich möchte Protokolle mit Python analysieren
Ich möchte mit aws mit Python spielen
Wenn Sie einen go table-gesteuerten Test in Python schreiben, ist es möglicherweise besser, subTest zu verwenden
Ich möchte es mit Python Lambda Django machen, aber ich werde aufhören
Ich möchte Twitter mit Python twittern, bin aber süchtig danach
Was tun, wenn Sie mit Python keine E-Mail an Yahoo senden konnten?
Wenn Sie es so verwenden möchten, wie es ist, wenn Sie es mit Lambda-Memo verwenden
Was tun, wenn ipython und python mit unterschiedlichen Versionen starten?
18 wunderschöne Python-Begriffe, die Sie vorlesen möchten. R18 mit Beispielsätzen
[Python] Wenn Sie ein Streudiagramm mehrerer Cluster zeichnen möchten
Wenn Sie mehrere Statistiken mit groupby of pandas v1 erhalten möchten
Wenn Sie Wörter in Python zählen möchten, können Sie bequem Counter verwenden.
QR-Code-Erstellung mit Python. Ich möchte mich nicht anstellen, weil ich jedes Mal, wenn ich einen Pendlerausweis ausstelle, dasselbe schreibe. ..
Ich möchte MATLAB feval mit Python verwenden
Ich möchte ein Spiel mit Python machen
Wenn Sie Word Cloud erstellen möchten.
[Mit Plotly auf die Karte schreiben] Dynamische Visualisierung mit Plotly [Python]
Ich möchte Temporäres Verzeichnis mit Python2 verwenden
Ich möchte -inf nicht mit np.log verwenden
#Unresolved Ich möchte Gobject-Introspection mit Python3 kompilieren
Ich möchte APG4b mit Python lösen (Kapitel 2)
Schreiben Sie CSV-Daten mit AWS-Lambda + Python in AWS-S3
[Python] Geben Sie Ihr Bestes, um SQL Alchemy zu beschleunigen
AssertNumQueries ist nützlich, wenn Sie N + 1-Abfragen einfach mit django testen möchten
Wenn Sie eine TODO-Anwendung (verteilt) jetzt nur mit Python erstellen möchten
Ich möchte ein Element mit numpy in eine Datei schreiben und es überprüfen.
Rufen Sie Rust von Python an, um schneller zu werden! PyO3-Tutorial: Umschließen von Klassen Teil ➀
Was Sie sich mit der grundlegenden Grammatik "String Manipulation" von Python merken möchten
Rufen Sie Rust von Python an, um schneller zu werden! PyO3-Tutorial: Umschließen von Klassen Teil ➁
Was tun, wenn bei der Installation von Python mit pyenv eine Fehlermeldung angezeigt wird?
Python-Programm ist langsam! Ich möchte beschleunigen! In einem solchen Fall ...
nb_conda_kernels wird empfohlen, wenn Sie die virtuelle Umgebung mit jupyter betreten möchten
Wenn Sie versuchen, Python2 pip nach der Installation von Python3 pip zu installieren, wird dies abgelehnt
Ich möchte in Python schreiben! (1) Überprüfung des Codeformats