import errno
import heapq
import itertools
+import math
import os
import socket
import stat
import subprocess
+import sys
import threading
import time
import traceback
-import sys
import warnings
import weakref
event_list = None
# Handle 'later' callbacks that are ready.
- end_time = self.time() + self._clock_resolution
+ now = self.time()
+ # Ensure that `end_time` is strictly increasing
+ # when the clock resolution is too small.
+ end_time = now + max(self._clock_resolution, math.ulp(now))
while self._scheduled:
handle = self._scheduled[0]
if handle._when >= end_time: