Was ich getan habe, als ich Python schneller machen wollte - Numba Edition -

Vorwort

http://qiita.com/open_cans/items/f180ae4dc945dc7b9066 Dies ist eine Fortsetzung dieses Artikels. Ich schreibe hauptsächlich für Leute, die sich für Millisekunden oder Mikrosekunden interessieren.

Was ist Numba?

numba ist ein Typ, der Python-Code mit einem JIT-Compiler kompiliert, um ihn schneller zu machen Ein ziemlich erstaunlicher Typ, der sehr leicht beschleunigen kann

Beispiel für die Verwendung von numba

sample.py


import numba

@numba.jit
def sumation(num):
  sum=0
  for i in range(num):
    sum += i
  return sum

sum = sumation(100)
print(sum)

Vor der Funktion wie in der dritten Zeile @numba.jit Einfach schreiben Es ist erstaunlich, wie einfach es ist, schneller zu werden! !!

Anmerkungen zu numba

Es ist einfach, aber es gibt einige Dinge zu beachten, wenn Sie es verwenden, also werde ich sie auflisten.

Inklusive Notation kann nicht verwendet werden

Im vorherigen Artikel habe ich es wie die beste Einschlussnotation geschrieben, aber es kann nicht mit numba verwendet werden. Ich glaube nicht, dass es da ist, aber wenn Sie sich den vorherigen Artikel ansehen und die Einschlussnotation schreiben, müssen Sie die Einschlussnotation in eine for-Anweisung umschreiben

Leere Liste kann nicht verwendet werden

sample.py


import numba

@numba.jit
def inputList(num):
  temp=[]
  temp.append(num)
  return sum

sum = inputList(100)
print(sum)

Ich bekomme eine Fehlermeldung, wenn ich so schreibe Temp = [] ist die Ursache

Vorsichtsmaßnahmen beim Kompilieren

Wenn Sie @ numba.jit in eine Funktion schreiben, die überhaupt nicht funktioniert, wird der Fehler ausgeblendet und Sie werden ihn nicht gut verstehen. Schreiben Sie daher unbedingt @ numba.jit, nachdem Sie bestätigt haben, dass es zuverlässig funktioniert

Vorsichtsmaßnahmen beim Kombinieren von Numba und Numpy

Manchmal versuche ich, eine Funktion zu beschleunigen, die numpy mit numba verwendet, aber manchmal kann ich nicht. Anscheinend unterstützen einige Numba-Funktionen Numpy nicht. Dieser Artikel (http://nekowarau.seesaa.net/article/428663212.html) Laut numba ist die von numba unterstützte numpy-Funktion (http://numba.pydata.org/numba-doc/0.14/numpy_support.html). Scheint in der Lage zu sein, mit zu bestätigen

Wenn dies nicht der Fall ist, schreiben Sie die Funktion in Scratch Dann können Sie den Vorteil einer Beschleunigung nutzen.

Recommended Posts

Was ich getan habe, als ich Python schneller machen wollte - Numba Edition -
Was ich beim Update von Python 2.6 auf 2.7 gemacht habe
Was ich getan habe, um Python-Speicher zu speichern
[Python] Was ich getan habe, um Unit Test zu machen
Wovon ich süchtig war, als ich Python Tornado benutzte
Was ich getan habe, um die Python2 EOL mit Zuversicht zu begrüßen
Wovon ich süchtig war, als der Processing-Benutzer zu Python wechselte
Eine Geschichte, die ich machen wollte, als ich eine Liste von Lernsitzungen mit Python bekam
Wovon ich süchtig war, als ich ALE in Vim für Python einführte
Worauf ich mich beim Studium von tkinter bezog
Ich wollte ABC160 mit Python lösen
Ich wollte ABC159 mit Python lösen
Was ich mit Python-Arrays gemacht habe
Was ich süchtig nach Python Autorun war
Ich wollte ABC172 mit Python lösen
Ich habe versucht, mit Raspeye 4 (Python Edition) ein signalähnliches Signal zu erzeugen.
[Bei Coder] Was ich getan habe, um den grünen Rang in Python zu erreichen
Ich überarbeitete "Ich habe versucht, Othello AI zu machen, als Programmieranfänger Python studierten"
Ich wollte den NOMURA Contest 2020 mit Python lösen
Ich möchte ein Spiel mit Python machen
Ich wollte Python 3.4.3 mit Homebrew + pyenv installieren
[Frage] Was passiert, wenn Sie% in Python verwenden?
Ich möchte C ++ - Code aus Python-Code erstellen!
Wie man Python für Anfänger schneller macht [numpy]
Was ich getan habe, als ich mit Lambda Python im Zeitlimit steckte
Was beim Nachahmen zu tun ist, wird in Python eingebettet
Als ich versuchte, Python3 in Atom einzuführen, blieb ich stecken
Fortsetzung ・ Ich habe versucht, Slackbot zu erstellen, nachdem ich Python3 studiert habe
Was ich getan habe, als ich wütend war, es mit der Option enable-shared einzufügen
Was tun, wenn "Name xxx nicht importiert werden kann" [Python]
Was ich getan habe, um eine SSH-Verbindung zur VPS Ubuntu-Umgebung herzustellen
Ich möchte am Ende etwas mit Python machen
Was ich getan habe, um die String-Suchaufgabe zu beschleunigen
Ich wollte den Panasonic Programming Contest 2020 mit Python lösen
Ich habe versucht, mit Python faker verschiedene "Dummy-Daten" zu erstellen
Ich wollte bestimmte Erweiterungen beim Erstellen der Sphinx-Dokumentation überspringen
Wenn ich versuche, Apache SSL zu erstellen, wird es nicht gestartet.
Was tun, wenn in Python "SSL: CERTIFICATE_VERIFY_FAILED _ssl.c: 1056" angezeigt wird?
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
Ich habe versucht, die Benutzeroberfläche neben Python und Tkinter dreiäugig zu gestalten
Ich möchte eine schöne Ergänzung zu input () in Python hinzufügen
[Python3] Liste der Websites, auf die ich beim Starten von Python verwiesen habe
Was ich in Python gelernt habe
Mayungos Python-Lernfolge 4: Ich habe versucht zu sehen, was passiert, wenn Zahlen als Buchstaben behandelt werden
[5.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, die Anfängerausgabe des Ameisenbuchs mit Python zu lösen
Was ich getan habe, um Anwendungsprotokolle in der GAE Flexible Environment auszugeben.
Beachten Sie, was Sie getan haben, um Flycheck mit Python zu verwenden
[2nd] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck für "Betrag" zu erstellen
[Python] Ich habe versucht, eine stabile Sortierung zu implementieren
Ich habe versucht, mit Python einen regulären Ausdruck von "Zeit" zu erstellen
Was ich mit json.dumps in Pythons base64-Codierung süchtig gemacht habe
[3.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich möchte Python GUI ausführen, wenn Raspberry Pi startet
Ich habe versucht, mit Python einen regulären Ausdruck von "Datum" zu erstellen
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Ich habe versucht, mit Python eine 2-Kanal-Post-Benachrichtigungsanwendung zu erstellen