中断一个很长的睡眠函数

Interrupt a really long sleep function

我需要一种方法来中断较长的 sleep 函数,而不会将其拆分为多个 sleep(1) 或任何更短的时间。停止的方式可以是任何可能的方式,包括threading.

为了更深入的解释,我想做的是测试 sleep 的极限,所以我正在编写一个自动程序重复调用 sleep。捕获 sleep.

引发的所有 OverflowError

我尝试过的:

from time import sleep
import threading
def test(x):
  try:
    sleep(x) #kill the thread or anyway to interrupt the sleep AFTER execution
  except:
    return 1
addigit = True
t = ""
while True:
  if addigit:
    t= t+"9"
  
  th = threading.Thread(target = test,args=(int(t),))
  print("running:"+t)
  ex = th.start()
  #threading.Lock.release() not working
  #th._stop()
  print(ex)
  if ex:
    if addigit:
      addigit = False
      print("len:"+len(t))

注意代码不完整,我只需要在执行后sleep立即停止的方式。 (我只需要sleep抛出的异常,不想等几年才知道答案)

flagstop statement check(if stop:exit)方式是行不通的,因为它们是在sleep之后执行的.

我会在 threading.Event 对象上调用 wait()。对于这样的问题,我通常会这样做。

这是一个例子: