getting a thread out of sleep

placid Bulkan at gmail.com
Wed Feb 21 00:26:18 EST 2007


On Feb 21, 4:21 pm, "placid" <Bul... at gmail.com> wrote:
> On Feb 21, 4:12 pm, mark <rkmr... at gmail.com> wrote:
>
>
>
> > On 20 Feb 2007 20:47:57 -0800, placid <Bul... at gmail.com> wrote:
>
> > > On Feb 21, 3:08 pm, mark <rkmr... at gmail.com> wrote:
> > > > Right now I have a thread that  sleeps for sometime and check if an
> > > > event has happened and go back to sleep. Now instead I want the thread
> > > > to sleep until the event has occured process the event and go back to sleep
>
> > > > class eventhndler(threading.Thread):
> > > >     def __init__(self):
> > > >         threading.Thread.__init__(self)
> > > >     def run(self):
> > > >         while True:
> > > >             time.sleep(SLEEPTIME)
> > > >             ''''do event stuff'''
>
> > > The way i would do this is by using an threading.Event (
> > >http://docs.python.org/lib/event-objects.html)
>
> > > <code>
>
> > > class eventhandler(threading.Thread):
> > >     def __init__(self):
> > >         threading.Thread.__init__(self)
> > >         self.event = threading.Event()
> > >     def run:
> > >         while True:
> > >             # block until some event happens
> > >             self.event.wait()
> > >             """ do stuff here """
> > >             self.event.clear()
> > > </code>
>
> > > the way to use this is to get the main/separate thread to set() the
> > > event object.
>
> > Can you give an example of how to get the main threead to set teh event object?
> > this is exactly what i wanted to do!
> > thanks a lot!
> > mark
>
> To set the event object
>
> <code>
>
> if __name__ == "__main__":
>     evtHandlerThread = eventhandler()
>     evtHandler.start()
>
>     # do something here #
>     evtHandler.event.set()
>
>     # do more stuff here #
>     evtHandler.event.set()
>
> </code>
>
> Hope thats what your looking for.
>
> Cheers

oops I've miss-typed the thread variable name the following should
work

<code>

if __name__ == "__main__":
    evtHandlerThread = eventhandler()
    evtHandlerThread.start()

    # do something here #
    evtHandlerThread.event.set()

    # do more stuff here #
    evtHandlerThread.event.set()

</code>




More information about the Python-list mailing list