)
-def busy_wait(duration):
- deadline = time.monotonic() + duration
- while time.monotonic() < deadline:
- pass
-
-
class TimeTestCase(unittest.TestCase):
def setUp(self):
# on Windows
self.assertLess(stop - start, 0.020)
- # bpo-33723: A busy loop of 100 ms should increase process_time()
- # by at least 15 ms. Tolerate 15 ms because of the bad resolution of
- # the clock on Windows (around 15.6 ms).
- min_time = 0.015
- busy_time = 0.100
-
- # process_time() should include CPU time spent in any thread
- start = time.process_time()
- busy_wait(busy_time)
- stop = time.process_time()
- self.assertGreaterEqual(stop - start, min_time)
-
- t = threading.Thread(target=busy_wait, args=(busy_time,))
- start = time.process_time()
- t.start()
- t.join()
- stop = time.process_time()
- self.assertGreaterEqual(stop - start, min_time)
-
info = time.get_clock_info('process_time')
self.assertTrue(info.monotonic)
self.assertFalse(info.adjustable)
# on Windows
self.assertLess(stop - start, 0.020)
- # bpo-33723: A busy loop of 100 ms should increase thread_time()
- # by at least 15 ms, but less than 30 ms in other threads.
- # Tolerate 15 and 30 ms because of the bad resolution
- # of the clock on Windows (around 15.6 ms).
- min_time = 0.015
- max_time = 0.030
- busy_time = 0.100
-
- # thread_time() should include CPU time spent in current thread...
- start = time.thread_time()
- busy_wait(busy_time)
- stop = time.thread_time()
- self.assertGreaterEqual(stop - start, min_time)
-
- # ...but not in other threads
- t = threading.Thread(target=busy_wait, args=(busy_time,))
- start = time.thread_time()
- t.start()
- t.join()
- stop = time.thread_time()
- self.assertLess(stop - start, max_time)
-
info = time.get_clock_info('thread_time')
self.assertTrue(info.monotonic)
self.assertFalse(info.adjustable)