Heisenbug?

Fragen zu Tkinter.
BlackJack

@Alfons Mittelmeyer: Was ist denn bitte der GUI-Thread in dem kein Python-Code auszuführen ist und wo wird denn von Python der nice-Wert gesetzt? Ersteres gibts nicht und zweiteres wird nicht gemacht.
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

BlackJack hat geschrieben:@Alfons Mittelmeyer: Was ist denn bitte der GUI-Thread in dem kein Python-Code auszuführen ist und wo wird denn von Python der nice-Wert gesetzt? Ersteres gibts nicht und zweiteres wird nicht gemacht.
Es geht nicht darum, dass da kein Python Code drin steht, sondern dass er nicht zur Ausführung ansteht. Die GUI wurde aufgebaut. Ein Event steht nicht zur Ausführung an. Tkinter ist in seiner mainloop und da im sleep Modus. Also kein Python Code steht zur Ausführung an. Erst dann, wenn ein after getriggert wird. Und das wird auch ausgeführt, weil das ein Event ist. Aber wenn der sleep der Mainloop endet und tkinter den Bildaufbau machen will, dann bekommt tkinter nicht die Rechenzeit dafür.

Weiß auch nicht, was es sonst sein kann. Evtl. Probleme mit dem GIL. Es soll da ja viele Probleme mit Multicore CPUs geben. Etwa eine CPU behandelt Threads mit IO und versucht den GIL von der anderen CPU zu bekommen. Code zur Ausführung 3 ticks. Versuche den GIL zu bekommen 16000 ticks.

Siehe http://www.dabeaz.com/python/GIL.pdf
Seite 37 ff

Es könnte natürlich auch sein, dass da, weil es kein Python Code ist, gar nicht versucht wird den GIL zu bekommen und damit auch den Thread, sofern der andere Thread den nicht selber abgibt. Aber das wird wohl nur sehr schwer herauszufinden sein.

Vielleicht hat jemand ja ein Python ohne GIL?
Antworten