On Tue, 3 Apr 2012 23:00:22 +0200 Anatoli Hristov <toli...@gmail.com> wrote:
> On 03 Apr 2012, at 22:45, Ian Kelly <ian.g.ke...@gmail.com> wrote: > > > On Tue, Apr 3, 2012 at 2:36 PM, Anatoli Hristov <toli...@gmail.com> wrote: > >> Hi, > >> > >> I'm trying to do a while loop with condition of time if time is > >> 12:00:00 print text, but for this one second the text is printed at > >> least 50 times, how can I print only once? > > > > Set a flag when you print the text to indicate that you've already > > printed it, and don't print it again if the flag is set. When it's no > > longer 12:00:00, reset the flag. > > > > That said, a busy while loop is probably the wrong way to do this, > > because it will run your CPU at 100%. Better would be to put the > > thread to sleep with time.sleep() calls or a real event loop with a > > timer event. > > > > Cheers, > > Ian > > Thank you Ian, > > what if I wait for other conditions if I use time.sleep for 1 sec? it > means that all the program is sleeping for a sec. > If I understand correctly, you don't want the whole program to sleep. If that's the case, you could use threading.Timer, for example: import threading, time def twelve(): print("It's twelve o'clock") local_secs = (time.time() - time.timezone) % (24 * 60 * 60) secs_till_12 = 12 * 60 * 60 - (local_secs % (12 * 60 * 60)) wait_till_12 = threading.Timer(secs_till_12, twelve) wait_till_12.start() Regards, John -- http://mail.python.org/mailman/listinfo/python-list