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

如何在Python中同时运行含input的无限循环与时间更新循环?

解决方案

要同时运行输入交互和时间更新任务,使用threading库完全可行,之前的问题可能是线程配置或资源占用导致的。以下是调整后的实现方案:

完整代码

import datetime
import threading
import time

memory = {
    "time": datetime.datetime.now()
}

def update_time():
    while True:
        memory["time"] = datetime.datetime.now()
        time.sleep(0.1)  # 避免高频循环占用过多CPU,可按需调整间隔

def code():
    while True:
        command = input("Z>").strip()
        commandl = command.lower()
        # 示例:输入time时打印当前存储的时间
        if commandl == "time":
            print(f"当前时间:{memory['time']}")
        elif commandl == "exit":
            break
        # 其他命令逻辑补充在这里

if __name__ == "__main__":
    # 启动时间更新线程,设置为守护线程随主线程退出
    time_update_thread = threading.Thread(target=update_time, daemon=True)
    time_update_thread.start()
    
    try:
        code()
    except KeyboardInterrupt:
        print("\n程序已退出")

关键说明

  • 守护线程配置:通过daemon=True将时间更新线程设为守护线程,这样当主线程(处理输入的code()函数)退出时,子线程会自动终止,不会残留后台进程。
  • CPU资源优化:在update_time的循环中添加time.sleep(),避免无限循环持续占用CPU。根据时间精度需求调整间隔,0.1秒的间隔既保证时间更新足够及时,又不会过度消耗资源。
  • 线程安全保障:memory["time"]的赋值操作是原子性的(直接替换整个datetime对象),无需额外加锁,多线程访问不会出现数据不一致问题。
  • 输入交互兼容性:主线程负责处理input()阻塞操作,子线程在后台独立更新时间,两者互不干扰,完全适配终端输入场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:01:35