Python ist eine sehr gute Sprache. Es besteht kein Zweifel, dass es sich um eine sehr dankbare Programmierplattform handelt, die viele leistungsstarke und leistungsstarke Bibliotheken bietet und eine erweiterte Informationsverarbeitung auch für Personen realisieren kann, die mit Informationstechnik nicht vertraut sind. Es ist jedoch nicht gut, Python blind zu glauben oder zu übertreiben. Daher schreibe ich diesen Artikel in der Hoffnung, dass er als Referenz dient, um die Stärken und Schwächen von Python zu verstehen und effektiv zu nutzen. Ich denke, der richtige Weg, es zu verwenden, besteht darin, die guten Punkte von Python mit anderen Sprachverarbeitungssystemen zu kombinieren. Der Text zum Erlernen von Python basiert darauf. → Ich habe einen Python-Text erstellt
● Geschwindigkeitsvergleich durch Simulation einer Kreisbahn (C gegen Python, Cython gegen Python) Dies ist ein überwältigender Sieg in C-Sprache. Die Ergebnisse zeigen, dass C mehr als 25 Mal schneller als Python ist. Bei einem einfachen numerischen Berechnungsprogramm wie diesem können Sie jedoch auch feststellen, dass mit Cython Geschwindigkeiten erreicht werden können, die mit der C-Sprache vergleichbar sind, ohne dass wesentliche Änderungen am Python-Programm vorgenommen werden müssen. ● Bilderzeugung des Mandelbrot-Sets (JavaScript vs Python, Cython vs Python) Dies ist ein Beispiel, das das Mandelbrot-Set als Bild mit einer Größe von 1024 x 1024 visualisiert. (Die für den Geschwindigkeitsvergleich verwendete Ausführungsumgebung ist Windows 10, Intel Core i7-5500U 2,39 GHz.) → Implementierungsbeispiel für HTML5 (JavaScript) Klicken Sie zum Ausführen auf die Schaltfläche "Start" Die durchschnittliche Ausführungszeit betrug 0,231 Sekunden. (Mit Google Chrome) → Beispiel für die Implementierung von Python + Pillow Nach dem Download py MandelbrotPython.py m.png -2.0 2.0 -2.0 2.0 Ausführen als. (Bild wird in m.png erzeugt) Die durchschnittliche Ausführungszeit betrug 53,645 Sekunden. Im Vergleich zur Ausführungszeit waren es 232,23 Mal. Das Auskommentieren des Teils, der Pillow aufruft, hat keinen spürbaren Einfluss auf die Ausführungszeit. Es ist ein überwältigender Sieg für JavaScript. Natürlich hängt es von dem Browser ab, den Sie ausführen, aber es ist immer noch ein zweistelliger Gewinn. → Implementierungsbeispiel für Cython + Pillow Kompilieren Sie nach dem Herunterladen mit dem Cython-Verarbeitungssystem, um das Python-Modul zu erstellen import MandelbrotPyx MandelbrotPyx.MakeMandelbrot('m2.png',-2.0,2.0,-2.0,2.0) Und so weiter. Die Ausführungszeit in derselben Computerumgebung beträgt durchschnittlich 7,601 Sekunden war. Durch die Verarbeitung mit Cython konnten wir etwa siebenmal beschleunigen. (Es gibt noch Raum für Optimierungen) Abgesehen davon nähert sich die Ausführungsgeschwindigkeit von Java und JavaScript heutzutage C an. (JavaScript Super-Einführungstext, Java Super-Einführungstext) ● Listen- / Set- / Wörterbuch-Geschwindigkeitsvergleich Python ist eine gute Umgebung für die Verarbeitung großer Datenmengen im Arbeitsspeicher. Es ist jedoch erforderlich, die Art der zu verwendenden Datenstruktur ordnungsgemäß zu verwenden. Andernfalls ist die Bearbeitungszeit für den praktischen Gebrauch zu lang. Ich habe die Verarbeitungszeit von Python list / set / dictionary getestet. → Versuch zur Verarbeitung der Datenstruktur (Auszug aus Python-Text: Textkörper / items / b465b0cf05b1b7fd4975)) Beispielprogramme: spdTest00.py, spdTest01.py .py), spdTest02.py Wenn Sie es wie ein Array mit einem ganzzahligen Index behandeln, ist die Python-Liste schnell, Sie können jedoch nicht nach Elementen suchen. Vielleicht machen Sie eine "lineare Suche". Bei der Suche nach Elementen müssen Sie Mengen und Wörterbücher verwenden. ● Geschwindigkeitsvergleich des C-Sprachprogramms mit / ohne NumPy Einer der Hauptzwecke bei der Verwendung von Python ist die Datenverarbeitung. Viele der Bibliotheken für Datenwissenschaft und maschinelles Lernen basieren auf NumPy. Da es eine solche Situation gibt, habe ich ein Programm erstellt, um das Produkt der Matrizen zu finden, und untersucht, wie schnell NumPy ist. Vergleich von 3 Programmen zur Berechnung des Matrizenprodukts (PDF-Bericht) (Auszug aus Python-Text: Textkörper) Programme: matmult01.py, matmult01_np.py ), Matmult01.c Im Vergleich zur Berechnung des Matrizenprodukts mithilfe einer Liste als Array ist NumPy 10.000-mal schneller. Als ich das Geschwindigkeitsverhältnis sah, dachte ich: "Stimmt etwas nicht?" Darüber hinaus ist es mehr als 30 Mal schneller als das einfache Schreiben in C-Sprache. In diesem Fall ist Python + NumPy der überwältigende Sieg. __Hinweis) __ Dies ist der Fall bei NumPy mit Intel MKL. Für NumPy ohne MKL wird es langsamer. ** (Ergänzung) ** Insbesondere ist die Matrixoperation von NumPy schnell, und wenn der Prozess, den Sie realisieren möchten, als Matrixberechnung beschrieben werden kann, kann die Ausführungsgeschwindigkeit erheblich verbessert werden. (→ PDF-Bericht: Ein Beispiel für die hohe Geschwindigkeit des Produkts von NumPy-Matrizen) Dies ist ein Auszug aus "Python3 Library Book". (Fortsetzung folgt)
Python ist eine anfängerfreundliche Sprache. Trotzdem ist es eine hochfunktionale Sprache. Leute, die in der Schule C- und Java-Programmierung gelernt haben, sind sich vielleicht sehr bewusst, aber zunächst machen sie keinen Sinn. Es funktioniert nur, wenn Sie viele "Wörter" schreiben, die nichts mit dem grundlegenden Algorithmus (Prozeduridee) zu tun haben ... Wir Lehrer erklären so unverständliche "Worte" wie "Ich muss es zuerst nicht verstehen ..." oder "Ich denke, es ist Magie!". Auf der anderen Seite hat Python nur sehr wenige "unverständliche Wörter". Selbst wenn Sie beispielsweise die erste Lektion zu einem Programm machen, das "Hallo Welt" anzeigt, das Sie häufig in der Schule machen, gibt es einen großen Unterschied zwischen Java und Python. Lassen Sie uns tatsächlich Java- und Python-Programme schreiben und vergleichen. → Java-Version "Hello, World" (5 Zeilen) → Python-Version "Hello, World" (1 Zeile) Das folgende Beispiel zeigt "Hallo, Welt" auf der GUI an. → Java-Version "Hello, World" (33 Zeilen: JavaFX-Version) → Python-Version "Hello, World" (17 Zeilen: Kivy-Version) → Python-Version "Hello, World" (8 Zeilen: Tkinter-Version) Selbst mit nur dieser Einführungsstunde unterscheidet sich die Anzahl der Zeilen im Programm erheblich. (Python ist kürzer) Darüber hinaus ermöglicht Python viele Schreibstile, die direkt ausdrücken können, was Sie tun möchten, und die Programmierproduktivität ist extrem hoch. (Weitere Informationen erhalten Sie in Python.) Im Fall von C und Java wird die erweiterte Verarbeitung, die häufig beschrieben werden muss, in Python im Voraus vorbereitet und kann problemlos aufgerufen werden. Vielen Dank. Es ist ein Gefühl des Lehrens auf dem Gebiet. Vorerst werde ich es erklären, um Missverständnisse zu vermeiden, aber das Erlernen der C-Sprache ist sehr sinnvoll. (Der Python-Interpreter selbst ist in C geschrieben.) Die Basis der Gerätesteuerung, die Basis des Umgangs mit Speicherressourcen, die Basis der Eingabe / Ausgabe, die Basis der Kommunikation, die Basis des Prozessmanagements ... C ist unvermeidlich, wenn Sie die Grundlagen der Informationstechnik erlernen. (Darüber hinaus sind die meisten Betriebssysteme wie Windows, MacOS und Linux in C geschrieben.) Wenn Sie Python lernen, lernen Sie bitte die Sprache C. Idealerweise sollten Sie ein Modul in C erstellen und von Python aus bedienen. Es gibt Optionen wie Cython und Numba, aber ich denke, es ist sehr gut, eine in C-Sprache geschriebene Funktion über ctypes aufzurufen.
Ich denke, das Beste an Python ist die Fülle an Bibliotheken. Selbst in meinem Seminar konnte ich schnell auf den Schüler (der damals noch in der dritten Klasse war) antworten, der sagte: "Ich würde gerne die Bilderkennung versuchen ...". Danach entwarf ich schnell den Entwurf des Produkts und die Abschlussarbeit und machte die Abschlussforschung fruchtbar (Gewinn in einem Technowettbewerb). Natürlich kann der Schüler auch nicht gut programmieren. Mit C ++ und Java ist es unmöglich, die Bedürfnisse der Schüler mit dieser Geschwindigkeit zu erfüllen. Python + OpenCV + Pillow gewinnt. Versteh mich nicht falsch, Python selbst ist langsam, aber verschiedene Pakete sind oft in C implementiert und sehr schnell. Ein prominentes Beispiel ist, dass die Verwendung von Python + NumPy für die numerische Verarbeitung schneller ist (Entwicklungs- und Ausführungsgeschwindigkeit) als das schlechte Schreiben in C oder FORTRAN. Auch SymPy, Scikit-Learn, Keras, PyTorch, Chainer ... Software auf der Ebene "Kann ich dies kostenlos veröffentlichen?" In dem Moment, als ich in die Welt von Python eintrat, war ich erstaunt, wie reich es war: "Was ist das!" Und "Was ist das ?!". Die Wahrnehmung, dass Python eine Sprache für KI ist, ist auch auf die Fülle verwandter Bibliotheken zurückzuführen. Dies ist ebenfalls irreführend, aber Python ist ursprünglich keine Sprache für KI. Dies bedeutet, dass KI-Forscher es sehr praktisch finden. Bibliotheken wie scicit-learn für maschinelles Lernen und Keras, die TensorFlow betreiben, sind Standardbibliotheken im Bereich maschinelles Lernen / KI, und "Python ist eine Voraussetzung".
Indizes (Slices), die an Datenstrukturen wie Python-Listen und Taples angehängt sind, sind sehr ausdrucksstark und es ist einfach, auf das Innere der Datenstruktur zuzugreifen. Sobald Sie sich an die Verwendung von Funktionen wie Map- und Filter- sowie Lambda-Ausdrücken gewöhnt haben, können Sie in einer Form programmieren, die die Datenstruktur so wie sie ist widerspiegelt. Wenn Sie es gut machen, können Sie die Schleife um for reduzieren und das gesamte Programm präzise schreiben. Lernen Sie es also bitte.
Dies ist schwer zu verstehen, bis Sie die Programmierung beherrschen, aber es ist ein fortgeschrittener Prozess, dass "Daten als Programm ausgeführt werden können". Es ist eine Funktion, die Ausdrücke und Anweisungen ausführen kann, die als Zeichenkettendaten erstellt wurden. (Die Funktion zum Ausführen von Daten als Programm ist eine unverzichtbare Funktion für die AI-basierte Programmierung.) Es ist eine private Angelegenheit, aber ich bin der Meinung, dass Lisp für Forschungsaktivitäten nicht mehr benötigt wird. (→ Korrektur: Immerhin ist Lisp wichtig) Für mich ist die Sprache, die benötigt wird, um AI-bezogene Themen anzugehen
geschrieben von Katsunori Nakamura