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.
multiprocessing vs candygram
@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.
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.
Danke fuer die Antwort. Wie gut ist Parallel Python ( http://www.parallelpython.com/ ) verglichen mit multiprocessing?
@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.