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

Python中实现线程依赖与重复调用ask输入函数的方法

解决方案

直接修改现有代码,让程序在用户成功输入后重新发起输入请求,核心是在timing函数检测到用户完成输入后,重新启动ask线程,实现循环输入的逻辑:

from threading import Thread
import time
import os

answer = None
ask_thread = None  # 用于保存当前的输入线程

def ask():
    global start_time, answer
    start_time = time.time()
    answer = input("Enter a number:\n")
    time.sleep(0.001)
    return 0

def timing(t):
    global answer, ask_thread
    time_limit = t
    while True:
        time_taken = time.time() - start_time
        if answer is not None:
            print(f"You took {time_taken} seconds to enter a number.")
            time_limit += 3
            answer = None
            # 重新启动输入线程,让用户继续输入
            ask_thread = Thread(target=ask)
            ask_thread.start()
        if time_taken > time_limit:
            print("Time's up !!! \n"
                  f"You took {time_taken} seconds.")
            os._exit(1)
        time.sleep(0.001)

# 初始化启动第一个输入线程
ask_thread = Thread(target=ask)
t2 = Thread(target=timing, args=(5,))

ask_thread.start()
t2.start()

关键改动说明

  • 新增ask_thread全局变量,用于跟踪当前的输入线程,方便后续重新启动
  • 在timing函数中,当检测到用户完成输入(answer is not None)后,重新创建并启动ask线程,触发下一次输入请求
  • 每次用户成功输入后,time_limit增加3秒,保持超时逻辑的连贯性

这样修改后,程序会循环要求用户输入数字,只要在时限内完成输入就会获得额外3秒,直到某次超时后程序终止。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 18:05:24