c't 9/2018
S. 178
Know-how
Python statt Bash

Bash-Skripte im Schlangengriff

Mit Python- statt Bash-Skripten Programme aufrufen und Ergebisse auswerten

Aus Python heraus ruft man auch ohne große Mühe Programme auf, die in anderen Sprachen geschrieben wurden. Für typische Programmieraufgaben brauchen Python-Programme aber wesentlich weniger Code als Bash-Skripte. Daher eignet sich Python, um mit eleganterem Code Bash-Skripte zu ersetzen.

Zum Testen neuer Nvidia-Grafikkarten (siehe S. 92) führen wir in der c’t-Redaktion unter anderem den Machine-Learning-Benchmark DeepBench aus. Der in C programmierte Benchmark besteht aus drei ausführbaren Einzeltests, die je zwei Parameter akzeptieren und jeweils eine ganze Batterie an Zeitmessungen ausspucken, beispielsweise für Matrixmultiplikationen mit verschieden großen Matrizen. Um verfälschte Ergebnisse durch zufällig dazwischengrätschende Systemprozesse zu vermeiden, führen wir jeden Benchmark dreimal aus und verwenden von jedem Einzelwert das beste Ergebnis. Diese Ergebnisse dampfen wir mit dem geometrischen Mittel auf einen einzelnen Wert pro Test ein, um ein Gesamtergebnis für die Performance einer Grafikkarte bei dieser Art von Berechnung zu erhalten. Man könnte die dafür nötigen 45 Tests per Hand starten, die Ergebnisse in Excel kopieren und dort auswerten. Mit einem Python-Skript macht der Testrechner das aber automatisch. Unser Beispiel zeigt, wie leicht Python Bash-Skripte und Batch-Dateien ersetzt.

Ein Bash-Skript könnte mit ein paar Schleifen relativ leicht die 45 Einzeltests starten. Beim Auswerten der Ergebnisse müsste man aber einige recht magische sed-Befehle erfinden, um aus den Konsolenausgaben der Benchmarks die Zahlenwerte der Ergebnisse herauszupicken. Spätestens beim Berechnen des geometrischen Mittels wird man sich eine Bibliothek wie NumPy wünschen, die es in so angenehmer Form nicht für die Bash gibt.