我试图在threading.timer
中使用while loop
来调用函数,我希望它先暂停while循环,然后等待直到计时器中的函数启动,然后继续循环。但是似乎我的期望与我的代码不一致。在此我将提供帮助。谢谢
代码:
import threading
def test():
print("Updating....")
def cont():
arg = raw_input("Update File(y/n): ")
print(arg)
if arg == 'y':
return True
else:
return False
def printit():
while cont():
print("Auto update every 10 sec!")
threading.Timer(10.0, test).start()
print('now its false')
printit()
我希望在再次运行循环之前先调用test()
。
答案 0 :(得分:3)
因为您正在使用threading
库,所以可以预期当前的行为。
当您执行threading.Timer(10.0, test).start()
时,将启动一个 new 线程,该线程将等待10秒钟,然后启动test
。但是由于它是一个新线程,而不是运行循环的基本线程,因此不会等待-这是异步编程中发生的情况。
如果您希望代码以同步的方式运行,则可以使用简单的time.sleep
:
import time
def printit():
while cont():
print("Auto update every 10 sec!")
time.sleep(10.0)
test()
print('now its false')