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

如何在Python中实现无操作超时自动备份的计时器?

需求与问题

我需要在Python中实现一个无操作计时器:当用户超过10分钟没有输入时,自动将会话数据备份到独立的JSON文件。但目前遇到两个难点:

  • 若使用“有输入就终止”的无限循环,会阻塞其他代码执行;
  • 传统用time.time()计算代码段执行时长的方式不适用,我要监控的是用户的无操作间隔,而非某段代码的运行时间。

以下是需要适配该功能的简化代码:

def run(self):
    run = True
    while run:
        command_input = input("Please type your command"):
        # 需要实现:有输入则执行对应操作,无操作超10分钟触发备份
        if command == "a":
            function_one()
        else:
            function_two()

适配后的解决方案

采用多线程方案可以解决这个问题:主线程处理用户输入并更新最后操作时间,同时启动一个独立线程专门监控无操作时长,达到阈值时自动执行备份。

import time
import threading

class Session:
    def __init__(self):
        self.last_command_timing = time.time()

    def run(self):
        run = True
        # 启动后台监控线程,主线程结束时自动退出
        threading.Thread(target=self.check_time_limit, daemon=True).start()
        while run:
            command_input = input("Please type your command: ")
            command = command_input.strip()
            if command == "a":
                self.last_command_timing = time.time()
                function_one()
            else:
                self.last_command_timing = time.time()
                function_two()

    def check_time_limit(self):
        while True:
            # 检查是否超过10分钟(600秒)
            if time.time() - self.last_command_timing > 600:
                self.backup_function()
                break
            # 每秒检查一次,降低CPU占用
            time.sleep(1)

    def backup_function(self):
        # 在此实现会话数据备份到JSON文件的逻辑
        print("会话数据已自动备份")

# 示例功能函数
def function_one():
    print("执行功能A")

def function_two():
    print("执行功能B")

关键说明

  • 监控线程设置为守护线程(daemon=True),确保主线程退出时该线程自动终止,避免残留后台进程;
  • 监控线程中加入time.sleep(1),避免高频循环占用过多CPU资源;
  • 每次用户输入后更新last_command_timing,保证计时的准确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 17:47:42