From: Hans Fugal Date: 2008-02-22T09:59:55+09:00 Subject: Re: Timers and Alarms Eric I. wrote: > On Feb 21, 12:57 pm, Hans Fugal wrote: >> On Feb 21, 8:42 am, "Eric I." wrote: >> >>> What about a roll-your-own solution like: >>> def my_sleep(interval, granularity = 60) >>> end_time = Time.now + interval >>> remaining = end_time - Time.now >>> while granularity < remaining >>> sleep granularity >>> remaining = end_time - Time.now >>> end >>> sleep remaining >>> end >> It's going to have to be something like this I think. I don't know how >> much impact waking every so often (about once per second in my >> situation) will have on power usage, but I see now that even setitimer >> in C suffers the same problem sleep does with laptop suspend. > > Looking at my code, it may be best to change the next-to-last line to: > > sleep remaining if remaining > 0 > > Which OS are you using? On OS X the man page for setitimer claims > there are three separate timers, one of which uses real time. From > the man page: > > The ITIMER_REAL timer decrements in real time. A SIGALRM signal > is > delivered when this timer expires. > > I don't have any experience with using this, so I'm left with the man > page. OS X, and experimentation verifies the same behavior as sleep. It's probably the same in Linux, but I don't have a linux laptop to try it with.