4 回答

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊
threading.Timer構(gòu)造函數(shù)接受各個(gè)目標(biāo)函數(shù) ( ) 的args關(guān)鍵字參數(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)
示例輸出將是(在“無(wú)限”打印中):
start
start
start
start
...

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
這是可能的解決方案之一:
import threading
def printit(whatever):
print(whatever)
threading.Timer(5.0, printit, {whatever}).start()
var = "start"
printit(var)
您收到錯(cuò)誤是因?yàn)槟趙hatever遞歸調(diào)用printit函數(shù)時(shí)沒有傳入(函數(shù)參數(shù))。
編輯:
但是,此解決方案將產(chǎn)生無(wú)限數(shù)量的線程。如果您想將該進(jìn)程作為后臺(tái)任務(wù)運(yùn)行,您可以這樣做只使用一個(gè)線程。
注意:我在這個(gè)例子中使用了 2 個(gè)參數(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貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊
你可以使用時(shí)間:
def printit(str_):
time.sleep(5)
print(str_)
var = "start"
while True:
printit(var)

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊
您可以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
添加回答
舉報(bào)