George
George

Reputation: 15551

Python: high precision time.sleep

can you tell me how can I get a high precision sleep-function in Python2.6 on Win32 and on Linux?

Upvotes: 50

Views: 102563

Answers (3)

forrest
forrest

Reputation: 21

def start(self):
    sec_arg = 10.0
    cptr = 0
    time_start = time.time()
    time_init = time.time()
    while True:
        cptr += 1
        time_start = time.time()
        time.sleep(((time_init + (sec_arg * cptr)) - time_start ))

        # AND YOUR CODE .......
        t00 = threading.Thread(name='thread_request', target=self.send_request, args=([]))
        t00.start()

It's a very good precision on linux

Upvotes: 1

Karl Voigtland
Karl Voigtland

Reputation: 7705

Here is a similar question:

how-accurate-is-pythons-time-sleep

On linux if you need high accuracy you might want to look into using ctypes to call nanosleep() or clock_nanosleep(). I'm not sure of all the implications of trying that though.

Upvotes: 14

Joey
Joey

Reputation: 354476

You can use floating-point numbers in sleep():

The argument may be a floating point number to indicate a more precise sleep time.

So

time.sleep(0.5)

will sleep for half a second.

In practice, however, it's unlikely that you will get much more than millisecond precision with sleep because operating systems usually only support millisecond sleeps and because very short amounts of time quickly get unreliable.

Upvotes: 77

Related Questions