我有一个函数,它在脚本运行时执行。 这个函数叫做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) 因为 function2
是 timer
中的局部变量,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()