iX 1/2017
S. 128
Praxis
Skriptsprachen
Aufmacherbild

Parallele Programmierung mit Python, Teil 3: Verteilte Systeme mit Jupyter und IPython

Eine Menge Schlangen

Mithilfe mehrerer Prozesse auf verschiedenen Rechnern eine Aufgabe zu erledigen, klingt im ersten Moment kompliziert. Aber mit Jupyter/IPython lassen sich solche verteilten Umgebungen relativ einfach in Python realisieren und damit eigene Anwendungen entwickeln.

Wenn der eigene Computer für eine bestimmte Aufgabe nicht mehr ausreicht, wäre es eine coole Sache, einfach weitere Rechner hinzuzuschalten und die Last zu verteilen. Gerade im wissenschaftlichen Umfeld mit vielen Berechnungen oder bei großen Datenanalysen finden solche verteilten Systeme klassischerweise ihre Anwendung. Da das Projekt Jupyter mit der Python-Umgebung IPython aus dieser Ecke kommt, gibt es dort seit längerer Zeit die Möglichkeit, Aufgaben relativ einfach auf mehrere Rechenknoten zu verteilen. IPython unterstützt das durch die strikte Trennung zwischen Oberfläche und dem Kernel, der die Programme letztendlich ausführt.

Jupyter/IPython ist von der Architektur her immer ein verteiltes System (Abb. 1).

Bei IPython nutzt der Anwender typischerweise seinen Webbrowser als Oberfläche und erstellt damit sein Notebook, eine Mischung aus Text und ausführbarem Python-Quelltext (siehe Abbildung 1 und den iX-Artikel zu IPython [1]). Auf Knopfdruck kann er die Python-Bestandteile vom Kernel ausführen lassen und bekommt das Ergebnis wieder in der Weboberfläche angezeigt.