Python定时器和禁用功能



我有一个函数,它在脚本运行时执行。 这个函数叫做main()

timer = 0
def main():
   function2()
   function3()
   timer()

此函数调用以下函数:函数 2、函数 3 和计时器。

def timer():
    global timer
    while timer < 120:
        timer += 1
        timer.sleep(1)
        print timer
        if timer == 120:
            timer = 0
            function2 = false

问题是计时器不会在控制台中打印。 并且 Function2 在 120 秒后不会被禁用。

我做错了什么? 任何帮助或建议将不胜感激!

这不会那样工作,a) 因为 function2timer 中的局部变量,b) 因为timer不是异步运行的。此外,函数内部也无法访问名为 timer 的变量,因为它本身被命名为 timer

如果你想在 120 秒后中断function2,你应该在function2开始时设置一个计时器 ( time.time() ),然后在我假设驻留在的循环中function2检查当前时间是否比进入函数时最初记录的时间提前 120 多。在这种情况下,您可以从该函数return以停止它。

编辑:这将是一个例子:

import time
def function2():
    timer = time.time()
    while True:
        if time.time() - timer > 120:
            return # time to exit from this function
        print("We are doing something!")
        time.sleep(1) # just for demonstration
def function3():
    pass # do something else
if __name__ == '__main__': # better than a function called "main"
    function2()
    function3()

我还没有看过你的代码的逻辑,但你需要做的第一件事是消除变量的歧义,例如:

import time
timer_ = 0
def timer():
    global timer_
    while timer_ < 120:
        timer_ += 1
        time.sleep(1)
        print timer_
        if timer_ == 120:
            timer_ = 0
            function2 = lambda: False
def main():
    function2()
    function3()
    timer()

最新更新