4 回答

TA貢獻1851條經驗 獲得超4個贊
threading.Timer構造函數(shù)接受各個目標函數(shù) ( ) 的args關鍵字參數(shù):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函數(shù)時沒有傳入(函數(shù)參數(shù))。
編輯:
但是,此解決方案將產生無限數(shù)量的線程。如果您想將該進程作為后臺任務運行,您可以這樣做只使用一個線程。
注意:我在這個例子中使用了 2 個參數(shù)。
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 循環(huán)中使用該函數(shù):
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
添加回答
舉報