Reputation: 15551
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
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
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
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