Sleep for exact time in python
Because you're working with a preemptive operating system, there's no way you can guarantee that your process will be able to have control of the CPU in 25ms.
If you'd still like to try, it would be better to have a busy loop that polls until 25ms has passed. Something like this might work:
import timetarget_time = time.clock() + 0.025while time.clock() < target_time: pass
What system are you on? If you're on Windows you may want to do something like this for exact timing:
import ctypeskernel32 = ctypes.windll.kernel32# This sets the priority of the process to realtime--the same priority as the mouse pointer.kernel32.SetThreadPriority(kernel32.GetCurrentThread(), 31)# This creates a timer. This only needs to be done once.timer = kernel32.CreateWaitableTimerA(ctypes.c_void_p(), True, ctypes.c_void_p())# The kernel measures in 100 nanosecond intervals, so we must multiply .25 by 10000delay = ctypes.c_longlong(.25 * 10000)kernel32.SetWaitableTimer(timer, ctypes.byref(delay), 0, ctypes.c_void_p(), ctypes.c_void_p(), False)kernel32.WaitForSingleObject(timer, 0xffffffff)
This code will pretty much guarentee your process will sleep .25 seconds. Watch out though- you may want to lower the priority to 2 or 3 unless it's absolutely critical that this sleeps for .25 seconds. Certainly don't change the priority too high for a user-end product.