中断一个很长的睡眠函数
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
抛出的异常,不想等几年才知道答案)
flag或stop statement check(if stop:exit
)方式是行不通的,因为它们是在sleep之后执行的.
我会在 threading.Event 对象上调用 wait()。对于这样的问题,我通常会这样做。
这是一个例子:
我需要一种方法来中断较长的 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
抛出的异常,不想等几年才知道答案)
flag或stop statement check(if stop:exit
)方式是行不通的,因为它们是在sleep之后执行的.
我会在 threading.Event 对象上调用 wait()。对于这样的问题,我通常会这样做。
这是一个例子: