tests/thread: Add a test for accuracy of sleep within a thread.
The existing thread_sleep1.py test only tests execution, not accuracy, of time.sleep. Also the existing test only tests sleep(0) on targets like rp2 that can only create a single thread. The new test in this commit checks for timing accuracy on the main thread and one other thread when they run at the same time. Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
parent
2265d70add
commit
a003ac2f73
|
@ -0,0 +1,31 @@
|
|||
# Test accuracy of sleep within a thread.
|
||||
|
||||
import time
|
||||
import _thread
|
||||
|
||||
|
||||
def sleep(t, valid_range):
|
||||
t0 = time.time_ns()
|
||||
time.sleep(t)
|
||||
dt_ms = (time.time_ns() - t0) // 1_000_000
|
||||
if dt_ms in valid_range:
|
||||
print("dt in range", t)
|
||||
else:
|
||||
print("dt not in range:", dt_ms)
|
||||
|
||||
|
||||
def thread_entry():
|
||||
lock.acquire()
|
||||
print("thread start")
|
||||
sleep(0.2, range(180, 400))
|
||||
print("thread end")
|
||||
|
||||
|
||||
lock = _thread.allocate_lock()
|
||||
lock.acquire()
|
||||
_thread.start_new_thread(thread_entry, ())
|
||||
|
||||
print("main start")
|
||||
lock.release()
|
||||
sleep(0.5, range(480, 800))
|
||||
print("main end")
|
Loading…
Reference in New Issue