4 回答
TA贡献1851条经验 获得超4个赞
threading.Timer构造函数接受各个目标函数 ( ) 的args关键字参数:kwargsclass threading.Timer(interval, function, args=None, kwargs=None)
import threading
def printit(whatever):
threading.Timer(5.0, printit, args=(whatever,)).start()
print(whatever)
var= "start"
printit(var)
示例输出将是(在“无限”打印中):
start
start
start
start
...
TA贡献1829条经验 获得超7个赞
这是可能的解决方案之一:
import threading
def printit(whatever):
print(whatever)
threading.Timer(5.0, printit, {whatever}).start()
var = "start"
printit(var)
您收到错误是因为您在whatever递归调用printit函数时没有传入(函数参数)。
编辑:
但是,此解决方案将产生无限数量的线程。如果您想将该进程作为后台任务运行,您可以这样做只使用一个线程。
注意:我在这个例子中使用了 2 个参数。
import time
import threading
def printit(whatever, whatever2, seconds=5):
while True:
print(whatever)
print(whatever2)
time.sleep(seconds)
var = "start"
var2 = "end"
threading.Thread(target=printit, kwargs={"whatever":var, "whatever2":var2, "seconds":5}).start()
print("Do something else")
输出:
start
end
Do something else
start
end
start
end
... (repeat start end every 5 seconds)
TA贡献1776条经验 获得超12个赞
你可以使用时间:
def printit(str_):
time.sleep(5)
print(str_)
var = "start"
while True:
printit(var)
TA贡献1893条经验 获得超10个赞
您可以time.sleep()在 while 循环中使用该函数:
import time
def printit(whatever, seconds=5):
while True:
print(whatever)
time.sleep(seconds)
var= "start"
printit(var) # prints "start" every 5 seconds
#start
#start
#start
添加回答
举报