WINXP vs. LINUX in threading.Thread

Lie Ryan lie.1296 at gmail.com
Thu Apr 23 02:34:21 CEST 2009


Diez B. Roggisch wrote:
> Kent schrieb:
>> hello all,
>>
>> i want to add a "new update notification" feature to my wxPython appl.
>> The codes below do the job. The logic is simple enough, I don't think
>> it needs to be explained.
>>
>> since sometimes, under windows, proxy setting was a script. and was
>> set in IE. In this case, connecting to the HTML will take relative
>> long time. I therefore run the following codes in a new Thread
>> (subclass of threading.Thread), so that user don't have to wait during
>> the version checking period.
>>
>> Under Linux, it worked smoothly. But under Windows XP, it didn't. If
>> there was new updates, the notification dialog can show, but no text,
>> icon, .... on it. Then, the whole application didn't response any
>> longer. :( I have to force stop the application process.
>>
>> where is the problem?
> 
> GUI-toolkits and threads usually are not a good idea (Qt4 being an 
> exception to that rule, at least they claim that). Google wxPython + 
> threading for answers how to solve this - essentially, you need to 
> create a timer or event-based solution that allows your 
> background-thread to inject a status message to the main eventloop.
> 
> Diez

You should use the GUI toolkit's own event loop for threading. An event 
loop is some sort of cooperative multithreading mechanism, if you used 
the threading mechanism from the threading library, there will be two 
conflicting threading mechanism, resulting in many hard-to-predict 
situation if you're not careful. The wxYield mechanism is much easier 
option than multithreading.



More information about the Python-list mailing list