温馨提示×

能中断linux毫秒sleep吗

小樊
81
2024-12-28 23:43:09
栏目: 智能运维

在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,但它可以确保在指定的超时时间内停止睡眠。

0