diff --git a/Lib/sched.py b/Lib/sched.py --- a/Lib/sched.py +++ b/Lib/sched.py @@ -76,8 +76,14 @@ If the event is not in the queue, this raises ValueError. """ - self._queue.remove(event) - heapq.heapify(self._queue) + pos = self._queue.index(event) + if pos == 0: + heapq.heappop(self._queue) + elif pos == len(self._queue) - 1: + self._queue.pop(pos) + else: + self._queue[pos] = self._queue.pop() + heapq._siftup(self._queue, pos) def empty(self): """Check whether the queue is empty."""