【问题标题】:python timer and disable functionpython定时器和禁用功能
【发布时间】:2016-02-11 07:17:35
【问题描述】:

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

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

此函数调用以下函数:function2、function3 和 timer。

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

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

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

【问题讨论】:

  • timer 变量似乎模棱两可。
  • 让我添加计时器变量
  • 看起来timer 是 1) 一个 int,2) 一个函数,3) 拼写错误的 time 模块。

标签: python function timer


【解决方案1】:

这不会那样工作,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()

【讨论】:

  • 好吧,我有点明白你的意思。但总的来说,我对编程有点陌生。你能用代码给我一个简短的解释吗?那太好了:)
  • 感谢您的回答!生病看看它是否有效!如果确实有问题,请通知您!
【解决方案2】:

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

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()

【讨论】:

  • 感谢您的回答!生病看看它,看看它是否适用于我的代码。我会告诉你它是否有效。
猜你喜欢
  • 1970-01-01
  • 2018-03-05
  • 2020-10-22
  • 2014-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-06
相关资源
最近更新 更多