如何让脚本顶部的while循环持续检测变量并保持运行?
问题分析
你的代码里,顶部的while example == 1循环只会执行一次——进入循环后你把example设为0,循环条件不满足就直接终止了。后续你通过input()等待输入,再把example改回1,但这时候原来的循环已经结束,不会再重新触发检测。
解决方案
要实现持续检测example状态的需求,最直接的方式是用多线程:让一个线程后台持续监控变量,主线程负责处理输入操作。
示例代码:
import threading import time example = 1 def monitor_example(): while True: if example == 1: print("test") global example example = 0 time.sleep(0.1) # 降低CPU占用 # 启动后台监控线程,daemon=True表示主线程结束时该线程自动退出 threading.Thread(target=monitor_example, daemon=True).start() # 主线程处理输入 while True: test = input() example = 1
代码说明
- 后台线程
monitor_example会一直运行,每隔0.1秒检查一次example的值,一旦发现是1就执行print("test")并将其设为0。 - 主线程负责等待用户输入,每次输入完成后把
example重置为1,后台线程会立刻检测到并执行对应操作。
如果不想用线程,也可以把所有逻辑放到一个外层循环里,但这种方式下input()会阻塞整个程序,只有在输入完成后才会检测example状态,体验不如线程方案:
example = 1 while True: if example == 1: print("test") example = 0 # 这里输入会阻塞,只有输入后才会继续循环检测 test = input() example = 1
内容的提问来源于stack exchange,提问作者Ewan1165
相关产品推荐
相关产品推荐

