Forums Neueste Beiträge
 

Re: [Python-de] threads

25/09/2012 - 11:08 von Diez Roggisch | Report spam
On 9/25/12 9:34 AM, "wg" <wg1@gmx.net> wrote:


On 24.09.2012 22:08, Vinzent Hoefler wrote:

wg wrote:


gibts eine Möglichkeit, dass thread 1 verhindern kann dass thread 2
aktiv wird?



Mit einem entsprechenden Lock, ja.


Vinzent.



OK, dazu muss ich thread 2 über lock oder queue steuern.
Da ich aber thread 2 an *beliebiger* Stelle von *thread 1* aus anhalten
will, kommt ich das so nicht machen.



Beliebig gibt's nicht. Wenn der Thread im C-Callstack steht, wird der
ausgeführt.





Gibt's eine Möglichkeit, den GIL (von python aus) zu beeinflussen?
Und zwar in der Form, daß thread 1 den GIL-State für sich beansprucht.
Das C-API hat so eine Funktion:
PyGILState_STATE PyGILState_Ensure()



Nichts offizielles, das ist bestenfalls ein hack. Du kannst natürlich
versuchen, über ctypes an's GIL zu kommen.

Und muss diese Salami-Taktik bei der Problembeschreibung sein? Das
bestàndige Glaskugelwetzen ist anstrengendŠ

Diez
 

Lesen sie die antworten

#1 wg
25/09/2012 - 12:11 | Warnen spam
On 25.09.2012 11:08, Diez Roggisch wrote:
On 9/25/12 9:34 AM, "wg" wrote:

On 24.09.2012 22:08, Vinzent Hoefler wrote:
wg wrote:

gibts eine Möglichkeit, dass thread 1 verhindern kann dass thread 2
aktiv wird?



Mit einem entsprechenden Lock, ja.


Vinzent.



OK, dazu muss ich thread 2 über lock oder queue steuern.
Da ich aber thread 2 an *beliebiger* Stelle von *thread 1* aus anhalten
will, kommt ich das so nicht machen.



Beliebig gibt's nicht. Wenn der Thread im C-Callstack steht, wird der
ausgeführt.




Gibt's eine Möglichkeit, den GIL (von python aus) zu beeinflussen?
Und zwar in der Form, daß thread 1 den GIL-State für sich beansprucht.
Das C-API hat so eine Funktion:
PyGILState_STATE PyGILState_Ensure()



Nichts offizielles, das ist bestenfalls ein hack. Du kannst natürlich
versuchen, über ctypes an's GIL zu kommen.



Hast dafür evtl. Hinweise/Links wie sowas gehen könnte?


Und muss diese Salami-Taktik bei der Problembeschreibung sein? Das
bestàndige Glaskugelwetzen ist anstrengendŠ

Diez




Ja, hast recht (Glaskugel?wetzen?);

ich wolle nur niemanden mit folgender Aufgabenstellung langweilen:
Thread 1 mit GUI, Daten werden von thread 2 via queue geliefert.
Thread 1 kann mit Button (oder Key) thread 2 *an belibeiger* Stelle
pausieren lassen.

Wird wohl ein C-framework dafür notwendig sein.

Wolf

Ähnliche fragen