Röntgenoptik-Projekt

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
BlackJack

@Gigaz: Vielleicht noch zwei Anmerkungen zu dem Python-Quelltext:

``a = a + [value]`` erzeugt eine Liste mit einen Wert. Die wird dann durch ``+`` mit der alten Liste zu einer neuen Verbunden, das heisst es wird eine neue Liste erstellt in die alles aus `a` kopiert wird und das eine Element aus der literalen Liste und dann wird die alte Liste, die an `a` gebunden war, und die einelementige Liste verworfen. Umständlicher geht es kaum. Um eine Liste um ein Element zu erweitern gibt es die `append()`-Methode. Aber selbst das ist unnötig umständlich, man hätte auch einfach eine literale Liste mit den vier Werten schreiben können:

Code: Alles auswählen

a = [pyp.Myclass(4), pyp.Myclass(5), pyp.Myclass(6), pyp.Myclass(7)]
Oder, da die Argumente von `Myclass` aufsteigende Zahlen sind, eine „list comprehension“:

Code: Alles auswählen

a = [pyp.Myclass(i) for i in xrange(4, 8)]
Das zweite ist das „anti pattern“ mit dem Index. Man kann in Python direkt über die Elemente einer Liste iterieren, ohne den Umweg über einen Index. Was hier zusätzlich den Vorteil hat, dass man die Liste verkürzen oder verlängern kann und automatisch alle Elemente erfasst werden, im Gegensatz zu der hart kodierten 4 in Deinem Code.

Code: Alles auswählen

out = Parallel(n_jobs=n)(delayed(Pyp.pyfunc)(x) for x in a)
Gigaz
User
Beiträge: 16
Registriert: Freitag 22. April 2016, 16:58

Danke :)

Inzwischen läuft das Programm und fittet parallelisiert. Ich musste allerdings aufs Python pp-Modul umsteigen, weil die joblib-Parallel-Prozesse offenbar nur I/O-Aufgaben beschleunigen.
Ich bin optimistisch, dass ich demnächst noch ein paar Bugs ausmerzen und ein echtes Python-Modul erstellen kann. :D Die Berechnungen des Programms scheinen jedenfalls noch in keinem anderen Modul verfügbar zu sein.
Antworten