import sched, time, threading print('Adding') s = sched.scheduler(time.time, time.sleep) s.enter(1.5, 0, print, ('start event',)) t = threading.Thread(target=s.run) t.start() for i in range(3): print('adding', i) s.enter(i, 0, print, ('event', i)) print('added', i) t.join() print('Canceling') s = sched.scheduler(time.time, time.sleep) events = [s.enter(i + 1, 0, print, ('event', i)) for i in range(3)] t = threading.Thread(target=s.run) t.start() for e in events: s.cancel(e) t.join()