在Linux中,你不能直接中断一个毫秒级的sleep
import time
import threading
def sleep_with_timeout(seconds, timeout):
def sleep_thread():
nonlocal seconds
start_time = time.time()
while True:
remaining_time = seconds - (time.time() - start_time)
if remaining_time <= 0:
break
time.sleep(0.001)
thread = threading.Thread(target=sleep_thread)
thread.start()
if timeout > 0:
time.sleep(timeout)
if thread.is_alive():
print("Interrupting sleep...")
thread.join()
else:
thread.join()
# 使用示例
sleep_with_timeout(5, 2) # 让线程睡眠5秒,但最多等待2秒
在这个示例中,我们创建了一个名为sleep_with_timeout
的函数,它接受两个参数:seconds
表示要睡眠的总时间,timeout
表示允许的最大等待时间。我们使用一个单独的线程来执行sleep
操作,并在到达最大等待时间后尝试中断它。请注意,这种方法并不能保证在毫秒级别精确地中断sleep
,但它可以确保在指定的超时时间内停止睡眠。