I am playing around with concurrent.futures.
Currently my future calls time.sleep(secs).
time.sleep(secs)
It seems that Future.cancel() does less than I thought.
I do not know much about concurrent.futures, but you can use this logic to break the time. Use a loop instead of sleep.time() or wait()
for i in range(sec): sleep(1)
interrupt or break can be used to come out of loop.