[python-users] Multiprocessing unter Python 3.6.1

Andre Müller gbs.deadeye at gmail.com
Do Jun 29 16:45:42 CEST 2017


Hallo,

das ist recht einfach zu erklären.
Die Prozesse sind voneinander isoliert und haben keinen gemeinsamen
Speicherbereich.
Intern serialisiert multiprocessing die Objekte mit Pickle um und nutzt
IPC, um die serialisierten Objekte
an den anderen laufenden Prozess zu schicken und dieser Prozess
desersialisiert die Informationen wieder
und stellt die Objekte wieder her. Das kostet jede Menge Zeit.
Multiprocessing lohnt sich nur, wenn die
Berechnung komplex ist und dadurch lange dauert (CPU-Zeit).

Der Overhead bei der einfachen Berechnung überwiegt und deswegen ist es
auch langsamer.
Numba nutzt einen JustInTime compiler ein und auch aufgrund der
Implementierung in C, wird dort sicherlich
mit Threads gearbeitet, wo auch der Global Interpreter Lock umgangen
werden kann.

Setzt man normale Threads bei Python ein, ist es immer SingleThreaded,
läuft also nur auf einem Kern.
IO ist davon ausgeschlossen.

D.h. trotz der Beschränkung des GIL, können Erweiterung in C den GIL
umgehen und dann
doch Multithreaded sein.

Ich hoffe die Erklärung stimmt so grob.

Schöne Grüße
Andre

-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 801 bytes
Beschreibung: OpenPGP digital signature
URL         : <http://lists.uni-koeln.de/pipermail/python-users/attachments/20170629/e24f5ec3/attachment.sig>


Mehr Informationen über die Mailingliste python-users