[Tutor] Question on multithreading
Thomas Pani
thomas.pani at gmail.com
Sun Feb 24 12:15:56 CET 2008
Hi,
Here are some thoughts:
From the Python Library Reference: "If the subclass overrides the
constructor, it must make sure to invoke the base class constructor
(Thread.__init__()) before doing anything else to the thread." You'll
have to do that for your GuiScript class.
You can't just stop a thread, you can only wait for it to finish using
join(). Or you can set its deamon flag, so it will exit when no
non-daemon threads are left.
Is there any reason for starting the GUI code in a separate thread? You
could just leave it in the main thread.
For some general notes on this topic this might be helpful:
http://wiki.wxpython.org/LongRunningTasks
Cheers,
Thomas Pani
Varsha Purohit wrote:
> Hello,
> i have a gui program in wxpython where i am spawning two threads.
> one for the mainloop of gui and other for some background tasks. I have
> to stop the background running thread once its work is done. I am trying
> to use the join method but it is giving me an error saying threads
> cannot be joined as the thread has just been created... whereas at that
> point the thread is done with its job. So i am confused whether i am
> putting it correctly or not. also, is there any method called stop() to
> stop the threads....Also, i want to see if the thread is alive or not..
> but i donno where should i put the isAlive() method associated with the
> thread.. i tried putting it in the code where thread does execution but
> apparently it is not the correct place.........
>
> Here is the code...
>
> class GuiScript(threading.Thread):
> def __init__(self):
> self.run()
> def run(self):
> app = wx.PySimpleApp()
> MainWindow().Show()
> app.MainLoop()
>
> class RunScript(threading.Thread):
> def run(self):
> imFile=test()
>
> and when the stop button is pressed the two threads should stop
> executing... so i have written code like this...
>
> def OnCloseWindow(self,event):
> GuiScript().Stop()
> RunScript().Stop()
> self.Destroy()
>
> but seems stop() method is not existing... can anybody guide me plzzzz
>
> thanks,
>
>
> --
> Varsha Purohit,
> Graduate Student
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
More information about the Tutor
mailing list