PyPy mit Anaconda?

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
consuli
User
Beiträge: 52
Registriert: Sonntag 26. Juli 2015, 22:10

Bibliotheken wie parallel (grundsätzlich ziemlich interessant weil es ohne concurrency auskommt) für Haskell und Rayon für Rust lösen dies indem innerhalb der Bibliothek zur Laufzeit entschieden wird was tatsächlich parallel ausgeführt wird und was nicht. Als Benutzer gibst du dann nur noch Hinweise dafür was parallel ausgeführt werden könnte.
Ja, eben. Laut den Scientific Programming in C++ Büchern gibt es in C++ schon seit Jahren Bibliotheken zur parallelen Ausführung (MPI, Open MPI, BLAS, ...). Deshalb bin ich als Umsteiger von R auf Python, das ja in Gegensatz zu R den Anspruch erhebt eine vollwertige Programmiersprache zu sein, von dessen Parallelisierungsfähigkeiten erstmal ziemlich enttäuscht.

Was versteckt sich eigentlich hinter dem Begriff "concurrency"? Habe ich auch schon im Python Manual gelesen und bereits dort nicht verstanden.
Who controls the British crown? Who keeps the metric system down? We do! We do!
Who leaves Atlantis off the maps? Who keeps the Marsians under wraps? We do! We do!
BlackJack

@consuli: Es gibt MPI-Anbindungen für Python. Das ist Interprozess-Kommunikation Und was BLAS jetzt mit paralleler Ausführung zu tun hat ist mir nicht wirklich klar. Das sind Routinen die auf Arrays operieren. NumPy nutzt das. Ich habe das Gefühl Du wirfst hier einiges durcheinander.

Eine ”vollwertige” Programmiersprache zu sein bedeutet nicht das die jetzt gerade für Deinen speziellen Anwendungsfall die geeingnetste Sprache ist. C++ ist auch eine ”vollwertige” Programmiersprache. Python und C haben sicher eine Schnittmenge für die sie geeignet sind, aber auch jeweils eigene Stärken wo die andere Sprache nicht so gut geeignet ist. Ich würde beispielsweise keine Webanwendung in C++ schreiben wollen.

Python ist auch für Scientific Computing geeignet, und wird dafür ja auch verwendet. Dabei ist nicht das reine ”number crunching” die Stärke von Python. Die Bibliotheken die dafür verwendet werden, also Numpy & Co, sind in C, C++, und Fortran geschrieben. Wenn sich ein Problem nicht in Operationen mit den Funktionen und Datentypen aus diesen Bibliotheken ausdrücken lässt, also *viele* Operationen in Python-Bytecode auszuführen sind, dann ist Python vielleicht nicht die richtige Sprache. Oder zumindest nicht alleine, denn man kann ja genau wie die genannten Bibliotheken das machen, seinen Code in Python *und* einer anderen Sprache schreiben.

Nur mal so aus Neugier: Hast Du schon ein Programm das fehlerfrei läuft oder versenkst Du hier erst einmal Zeit in die theoretische Parallelisierung von etwas das noch gar nicht existiert? Und warum verwendest Du nicht C++?
consuli
User
Beiträge: 52
Registriert: Sonntag 26. Juli 2015, 22:10

BlackJack hat geschrieben: Nur mal so aus Neugier: Hast Du schon ein Programm das fehlerfrei läuft ?
Ich habe ein R Programm dass den Kernteil des Problems in einem eingeschränkten Parameterraum löst. Dieses Programm möchte ich aus Vorbild und Performance Gründen nach Python portieren und zur Vollständigkeit ausbauen. Dabei soll die Python GLM Programmierung in genmod als Vorbild dienen.
BlackJack hat geschrieben: Oder versenkst Du hier erst einmal Zeit in die theoretische Parallelisierung von etwas das noch gar nicht existiert?
Ja, ich kläre die technischen Gegebenheiten
- Datentypen (Vektoren, Matrizen, Dataframes)
- Funktionalitäten (Matrizenmultiplikatione, numerische Optimierungsfunktionen, ...)
- Performance (Parallele Programmierung, (Byte)Compilierung, ...)
vorher ab. Der worst case wäre, dass auf der Hälfte des Projekts die Programmiersprache wechseln müsste.
BlackJack hat geschrieben: Oder zumindest nicht alleine, denn man kann ja genau wie die genannten Bibliotheken das machen, seinen Code in Python *und* einer anderen Sprache schreiben. Warum verwendest Du (zusätzlich) nicht C++?
Ja, dass ist ein sehr guter Hinweis. Leider kann ich kein C++ (bis auf ganz paar Basics von einem Unikurs vor x Jahren). Zwischenzeitlich habe ich jedoch rausgefunden das Cython (im Verleich zu pur C++) relativ einfache und doch performante, insbesondere GIL und Prozess-Wasserkopf freie, Parallelprogrammierung ermöglicht.
Who controls the British crown? Who keeps the metric system down? We do! We do!
Who leaves Atlantis off the maps? Who keeps the Marsians under wraps? We do! We do!
BlackJack

@consuli: Wenn Du etwas aus Performancegründen von R nach Python portieren möchtest, dann möchtest Du das vielleicht gar nicht nach Python portieren. Performance ist nicht unbedingt das erste was mir bei Python einfällt. Also was die Ausführung von Rechnungen angeht, nicht was die Entwicklung von Programmen angeht.
__deets__
User
Beiträge: 14480
Registriert: Mittwoch 14. Oktober 2015, 14:29

consuli hat geschrieben: Ja, dass ist ein sehr guter Hinweis. Leider kann ich kein C++ (bis auf ganz paar Basics von einem Unikurs vor x Jahren). Zwischenzeitlich habe ich jedoch rausgefunden das Cython (im Verleich zu pur C++) relativ einfache und doch performante, insbesondere GIL und Prozess-Wasserkopf freie, Parallelprogrammierung ermöglicht.
Wo steht das, bzw. wie sieht das genau aus? In dieser Absolutheit halte ich die Aussage fuer etwas gewagt - so toll Cython ist.
consuli
User
Beiträge: 52
Registriert: Sonntag 26. Juli 2015, 22:10

__deets__ hat geschrieben:
consuli hat geschrieben: Ja, dass ist ein sehr guter Hinweis. Leider kann ich kein C++ (bis auf ganz paar Basics von einem Unikurs vor x Jahren). Zwischenzeitlich habe ich jedoch rausgefunden das Cython (im Verleich zu pur C++) relativ einfache und doch performante, insbesondere GIL und Prozess-Wasserkopf freie, Parallelprogrammierung ermöglicht.
Wo steht das, bzw. wie sieht das genau aus? In dieser Absolutheit halte ich die Aussage fuer etwas gewagt - so toll Cython ist.
Z.B.
https://python.g-node.org/python-summer ... cython.pdf
http://www.perrygeo.com/parallelizing-n ... d-mpi.html
Who controls the British crown? Who keeps the metric system down? We do! We do!
Who leaves Atlantis off the maps? Who keeps the Marsians under wraps? We do! We do!
consuli
User
Beiträge: 52
Registriert: Sonntag 26. Juli 2015, 22:10

Noch einen besseren Link direkt von der Quelle:
cython parallel module
Who controls the British crown? Who keeps the metric system down? We do! We do!
Who leaves Atlantis off the maps? Who keeps the Marsians under wraps? We do! We do!
BlackJack

Bei Packt gibt es noch 14 Stunden lang das Buch Python Parallel Programming Cookbook kostenlos als E-Book. Keine Ahnung ob es was taugt, aber für *den* Preis kann man ja mal rein schauen. :-)
Antworten