You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中单次延迟10秒执行代码且不阻塞其他方法?

实现延迟单次执行的类方法方案

嘿,这个需求其实挺常见的,我来给你捋捋怎么实现~用Python的话,咱们可以借助标准库threading里的Timer类来搞定——它专门用来处理延迟单次执行的场景,而且不会阻塞主线程,延迟期间其他方法完全能正常调用,完美匹配你的需求。

下面是一个完整的可运行示例:

import threading

class MyClass:
    def main_method(self):
        # 先执行你需要的前置业务代码
        print("正在执行前置逻辑,接下来将延迟10秒调用目标方法...")
        
        # 初始化Timer:第一个参数是延迟秒数,第二个是要调用的方法,args是传递给目标方法的参数(可选)
        delay_timer = threading.Timer(10.0, self.delayed_method, args=("测试参数",))
        delay_timer.start()  # 启动定时器
        
        # 这里可以继续执行其他逻辑,或者直接返回,主线程不会被卡住
        print("前置逻辑执行完毕,其他方法现在就能正常调用啦")

    def delayed_method(self, param):
        # 延迟10秒后才会执行的方法
        print(f"延迟10秒后触发的方法,收到参数:{param}")

    def other_method(self):
        # 测试用的其他方法,验证延迟期间是否能正常运行
        print("其他方法正在被调用,完全不受延迟影响")

# 测试代码
if __name__ == "__main__":
    my_obj = MyClass()
    my_obj.main_method()
    # 立即调用other_method,看看会不会被阻塞
    my_obj.other_method()

关键细节说明

  • 为什么用threading.Timer?
    它是threading.Thread的子类,会在指定时间后启动一个独立线程执行目标方法,主线程该干嘛干嘛,完全不会被挂起,所以其他方法在延迟期间可以正常调用。
  • 防止重复触发(可选)
    如果担心多次调用main_method会创建多个定时器,导致目标方法被多次执行,可以在类里维护一个定时器实例,每次创建前先取消之前的:
    class MyClass:
        def __init__(self):
            self.active_timer = None
    
        def main_method(self):
            # 先取消已存在的定时器(如果有的话)
            if self.active_timer is not None:
                self.active_timer.cancel()
            # 创建新的定时器
            self.active_timer = threading.Timer(10.0, self.delayed_method)
            self.active_timer.start()
    
  • 线程安全提醒
    如果delayed_method会操作类的共享属性,记得用threading.Lock加锁,避免多个线程同时修改导致的竞态问题。

要是你用的是其他编程语言(比如Java),思路也差不多:Java可以用ScheduledExecutorService的schedule方法,提交一个延迟执行的任务到线程池,同样不会阻塞主线程。

内容的提问来源于stack exchange,提问作者PBuddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:42:11