[Python-de] Mandelbrot mit Threads: Keine CPU-Vollauslastung

Andreas Meile usenet at andreas-meile.ch
Mo Mai 4 13:56:22 CEST 2015


Hallo Diez

"Diez B. Roggisch" <deets at web.de> schrieb im Newsbeitrag 
news:mailman.79.1430731120.12865.python-de at python.org...
> Und diese Einschränkung (das sogenannte GIL - Global Interpreter Lock) ist 
> so
> fundamental relevant dafür wie Python funktioniert, dass man das nicht 
> “mal eben”
> ändern kann.

Danke für diesen wirklich wichtigen Hinweis. Per Google gefunden:

https://wiki.python.org/moin/GlobalInterpreterLock
Und speziell noch lesenswert daraus:
http://www.dabeaz.com/python/GIL.pdf

> Darum gibt es seit inzwischen geraumer Zeit das Modul “multiprocessing”.
> Das ist in vielen Fällen (und Apfelmännchen gehört IMHO dazu, da alle
> Teilaufgaben unabhaenging von den anderen berechnet werden können) fast
> ein drop-in-replacement fuer das threading Modul.

Werde ich bei Gelegenheit einmal anschauen, danke für diesen Hinweis. Sonst 
bin ich mit

https://docs.python.org/3/library/multiprocessing.html

an richtigen Ort für Details dazu?

> Allerdings nicht fuer dich, denn dein Code ist ziemlich problematisch -
> aufgrund der Verwendung von jeder Menge globalem Zustand. Das würde man
> auch mit threading so nicht machen, sondern zB Arbeitsaufgaben mittels
> Queue.Queue verteilen. Und so arbeitet auch multiprocessing, denn 
> geteilten,
> globalen Zustand gibt es dort per definition nicht.

Ich weiss, dass die aktuelle Version von der Softwaredesign-Perspektive noch 
nicht das Gelbe vom Ei ist. Werde aber gerne mit der Zeit in Form eines 
Refactorings versuchen, "global" ähnlich wie früher das "goto" auszurotten 
und mir eine passendes Software-Design mit Klassen und besserer 
Datenkapselung einfallen lassen.

Nebenbei: Aktuell arbeite ich mit der Idle-Entwicklungsumgebung. Frage: Gibt 
es auch Alternativen, die bezüglich Code Completion und Code-Navigation 
ähnlich nahe einem Eclipse mit Java kommen? Oder gar ein Python-Plugin für 
Eclipse selber?

> Eine Alternative könnte fuer dein spezielles Problem (da 
> arithmetik-lastik) auch
> noch PyPy sein.

Muss ich mir dann auch einmal noch anschauen.

          Andreas
-- 
"127.0.0.1 was ist das? Ich kenne nur ::1!" - www.swissipv6council.ch 



Mehr Informationen über die Mailingliste python-de