Seite 1 von 1

multiprocessing vs candygram

Verfasst: Sonntag 6. März 2011, 08:18
von mit
Hallo,
warum ist multiprocessing ( http://docs.python.org/dev/library/mult ... processing ) default in Python und nicht candygram ( http://candygram.sourceforge.net/node6.html )?

Vielen Dank in Vorraus.

Re: multiprocessing vs candygram

Verfasst: Sonntag 6. März 2011, 09:23
von BlackJack
@mit: Weil es keiner benutzen würde, und die Leute sich beschweren würden, dass sie statt etwas wo sie erst einmal Erlang-Bücher lesen sollen um es zu verstehen, viel lieber etwas hätten was wie `threading` funktioniert, aber eben wirklich parallel. ;-)

Apropos wirklich parallel: Dir ist klar das `candygram` im Hintergrund Threads benutzt, also in CPython die gleichen Einschränkungen hat wie das `threading`-Modul, und damit kein Ersatz für `multiprocessing` wäre!?

Und das Ziel wären auch keine Betriebssystem-Prozesse gewesen, wie bei `multiprocessing`, sondern "microthreads" wie in Erlang -- wenn die Candygram-Entwicklung nicht 2004 eingeschlafen wäre. Das was Erlang "Prozess" nennt, hat nämlich weniger mit *parallel* ausgeführtem Code zu tun. Das ist eher kooperatives Multitasking. Wie zum Beispiel "greenlets" bei Stackless-Python. Das Ziel und der Vorteil bei Erlang ist es, mehrere zehn- oder gar hunderttausende von diesen "Prozessen" zu haben, was die üblichen Betriebssysteme weder mit Prozessen, noch mit Threads hin bekommen.

Re: multiprocessing vs candygram

Verfasst: Montag 7. März 2011, 15:04
von mit
Danke fuer die Antwort. Wie gut ist Parallel Python ( http://www.parallelpython.com/ ) verglichen mit multiprocessing?

Re: multiprocessing vs candygram

Verfasst: Montag 7. März 2011, 16:13
von BlackJack
@mit: Nach welchen Kriterien? Parallel Python kann Aufgaben auf mehrere Rechner verteilen, `multiprocessing` beschränkt sich auf einen Rechner. Dafür erscheint mir die Übergabe von Funktionen samt expliziter Angabe von verwendeten Modulen und abhängigen Funktionen etwas umständlich.