[PYTHON] Über die Ineffizienz der Datenübertragung im luigi on-memory

In dem Kommentar von Parameteroptimierung mit luigi erhielt ich die Information, dass "eine Übertragung im Speicher mit luigi.mock möglich zu sein scheint", und ich habe es tatsächlich getan. Die Geschichte, die ich versucht habe. Nun, aus dem Namen Mock geht hervor, dass Datei-E / A auf Pseudo-Weise im Speicher ausgeführt werden, und ich denke, dass dies nicht so effizient sein wird. Ich war da.

Datenübertragungscode im Speicher

Der diesmal verwendete Code lautet wie folgt. https://github.com/keisuke-yanagisawa/study/blob/20151208/luigi/mock_test.py Verwenden Sie python mock_test.py main --use mock, um die Version der Mock-Nutzung zu überprüfen. Sie können die mock-freie Version mit python mock_test.py main ausführen.

Wie Sie sehen können, handelt es sich um einen Code, der CSV mit 10000000 "1" erstellt, durch Kommas getrennt, gelesen und die Anzahl der Zeichen gezählt wird. Die endgültige Ausgabe lautet 19999999. Ich habe etwas Zeit, um ein Array zu erstellen, aber es ist fast so, also ist es ein Geist. Tatsächlich machte dies einen Unterschied bei den folgenden Zeitmessungen.

Ergebnis der Zeitmessung

Ich werde Ihnen das Ergebnis schnell zeigen. Dieses Mal habe ich den Zeitbefehl verwendet, um die Zeit dreimal zu messen.

luigi.LocalTarget luigi.mock.MockTarget
Erstes Mal 10.952 sec. 29.879 sec.
Zweites Mal 7.829 sec. 30.883 sec.
Drittes Mal 11.137 sec. 27.766 sec.

Ja, ich habe nichts dagegen. Selbst mit Mock hatte ich nicht erwartet, dass es so langsam sein würde. Wie von der Hauptfamilie erklärt, fühlt es sich wie ein Testmechanismus an.

Schreiben wir also eine Pounding-Datei für den täglichen Gebrauch.

Recommended Posts

Über die Ineffizienz der Datenübertragung im luigi on-memory
Über die Komponenten von Luigi
Die Geschichte des Lesens von HSPICE-Daten in Python
[Hinweis] Über die Rolle des Unterstrichs "_" in Python
Über das Testen bei der Implementierung von Modellen für maschinelles Lernen
Den Inhalt der Daten in Python nicht kennen
Über die übersichtliche Anordnung in der Importreihenfolge von Flake8
Verwenden wir die offenen Daten von "Mamebus" in Python
Ein Memorandum über die Umsetzung von Empfehlungen in Python
Über die Funktionen von Python
Über die Datenverwaltung von Amboss-App-Server
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
[Homologie] Zählen Sie mit Python die Anzahl der Löcher in den Daten
Die Geschichte der Teilnahme an AtCoder
Über Boxplot und Violinplot, die die Variation unabhängiger Daten visualisieren
Über den Rückgabewert von pthread_mutex_init ()
Organisieren Sie nützliche Blogs im Bereich Data Science (Übersee & Japan).
Über den Rückgabewert des Histogramms.
Über den Grundtyp von Go
Die Geschichte des "Lochs" in der Akte
Über die Obergrenze von Threads-max
Überprüfen Sie die Datenzusammenfassung in CASTable
Über die durchschnittliche Option von sklearn.metrics.f1_score
Über das Verhalten von Yield_per von SqlAlchemy
Über die Größe der Punkte in Matplotlib
Informationen zur Grundlagenliste der Python-Grundlagen
Suchen Sie den Namen und die Daten einer freien Variablen in einem Funktionsobjekt
Holen Sie sich den Schlüssel für die Migration von JSON-Daten auf der zweiten Ebene mit Python
Erläutern Sie den Mechanismus der PEP557-Datenklasse
[Verständnis in 3 Minuten] Der Beginn von Linux
Überprüfen Sie das Verhalten des Zerstörers in Python
Die Geschichte eines Fehlers in PyOCR
Implementieren Sie einen Teil des Prozesses in C ++
Holen Sie sich die Spaltenliste und Datenliste von CASTable
Informationen zum Verhalten von enable_backprop von Chainer v2
Informationen zur virtuellen Umgebung von Python Version 3.7
Das Ergebnis der Installation von Python auf Anaconda
Ich habe versucht, die verkratzten Daten in CSV zu speichern!
Über die Argumente der Setup-Funktion von PyCaret
Grundlagen zum Ausführen von NoxPlayer in Python
Trennung von Design und Daten in matplotlib
Über die Normalgleichung der linearen Regression
Konvertierung von Zeitdaten in 25-Uhr-Notation
Auf der Suche nach dem schnellsten FizzBuzz in Python
Visualisieren Sie die Exportdaten des Piyo-Protokolls
Sprechen Sie über die Funktionen, für die Pandas und ich im Projekt verantwortlich waren
Suchen Sie den Index der Elemente, die den Bedingungen im Pandas-Datenrahmen / der Pandas-Serie entsprechen
Versuchen Sie, die Eisenbahndaten der nationalen Landnummern in 3D anzuzeigen
Geben Sie die Anzahl der CPU-Kerne in Python aus
Bedeutung von {Versionsnummer} im MySQL-RPM-Paket
[Python] Sortieren Sie die Liste von pathlib.Path in natürlicher Reihenfolge
Informationen zur Genauigkeit der Berechnungsmethode für das Umfangsverhältnis von Archimedes
Über das Verhalten von copy, deepcopy und numpy.copy
Informationen zur X-Achsen-Notation des Balkendiagramms von Matplotlib
Ändern Sie die Schriftgröße der Legende in df.plot