如何实现仅满足指定条件时运行、触发后等待下一次条件满足的while循环?
问题原因分析
你现有代码出现无限循环的核心问题如下:
- 外层
while True没有加任何等待逻辑,会高频持续校验条件,只要listposts和listView的数值没有及时更新,条件持续成立的情况下就会反复触发执行B函数 - 你写的内层while循环没有实际作用,每次进入条件判断后只会执行一次B就把
Condition设为False退出内层,但外层死循环会立刻重新校验条件,没有做「同一次条件成立周期内只执行一次B」的状态标记
正确实现方案
你需要新增状态标记逻辑,保证同一次条件成立周期内只执行一次B,同时加适当延时避免CPU空转,示例代码如下:
import time # 初始化标记,记录上一次是否已经触发过B has_executed = False while True: # 校验你需要的条件A condition_a = listposts != 0 and listposts != listView if condition_a and not has_executed: # 条件首次满足时执行B B() # 标记已执行,同一次条件满足的周期内不会重复执行 has_executed = True elif not condition_a: # 条件不满足时重置标记,等待下次条件满足时可以再次触发 has_executed = False # 按需调整等待时长,单位为秒,避免CPU占用过高 time.sleep(1)
逻辑说明
- 当条件A首次从「不满足」变为「满足」时,会触发一次B函数,之后
has_executed标记变为True,即使条件A持续成立,也不会重复执行B - 只有当条件A先变为不满足,重置
has_executed为False后,下次条件A再次成立时才会再次执行B,完全符合你要的「触发一次后停止,等待条件再次满足才运行」的需求
内容的提问来源于stack exchange,提问作者terry555
相关产品推荐
相关产品推荐

