asynchronous alarm

Paul Rubin http
Sun Feb 24 08:19:21 CET 2008


Alan Isaac <aisaac at american.edu> writes:
>         while True:
>                 sys.stdout.write('\a')
>                 sys.stdout.flush()
>                 time.sleep(0.5)
> 
> I want to add code to allow me to turn off this alarm and then
> interact with the program in its new state (which the alarm alerts
> me to).
> 
> Question: how best to do this mostly simply in a console application
> and in a Tkinter application?

You'd usually use another thread to tell the loop when to exit,
or run the loop itself in another thread:

    import sys,time
    from threading import Event, Thread

    def f(event):
       while not event.isSet():
           sys.stdout.write('\a')
           sys.stdout.flush()
           time.sleep(0.5)

    a = Event()
    Thread(target=f, args=(a,)).start()
    raw_input('hit return when done: ')
    a.set()

see the docs for the threading module, to make sense of this.



More information about the Python-list mailing list