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
相关产品推荐
相关产品推荐

