如何实现独立运行且可交互的定时器与业务代码程序?
需求与问题
我需要实现一个带独立定时器的循环程序,核心要求是:每次循环迭代时,程序能从定时器的剩余倒计时位置继续执行——也就是说,定时器运行期间,下一次迭代要直接跳转到当前剩余时间的位置。
尝试的错误代码
import time import threading def scan_if_won(): # 返回True或False pass def wait_for_start_signal(): # 返回True或False pass def main(): print("Action 0") while True: time.sleep(20) # 或其他定时器函数 while wait_for_start_signal() == False: # 通常耗时6-9秒,时长不确定 start = wait_for_start_signal() if start == True: break # 重置定时器,从20开始倒计时 time.sleep(3) result = scan_if_won() # 扫描非即时操作,耗时1-2秒 if result == False print("Action 1") if result == True print("Action 2") # 现在需要实现:下一次循环的time.sleep()值应为20 - 3 - scan_if_won()的耗时 main()
遇到的困惑
- 原代码无法实现“从定时器剩余时间继续执行”的核心需求
- 考虑用threading实现独立定时器,但不知道如何在循环内启动/终止线程,以及如何在线程间共享定时器当前剩余时间的变量
- 补充问题:程序运行时,胜负动作(Action 1和Action 2)会同时触发两次,推测是线程未正确终止导致的
内容的提问来源于stack exchange,提问作者George Rabus
相关产品推荐
相关产品推荐

