2017-05-03 374 views
0

我需要寫一個函數可以多次重複其他函數。我正在使用threading.Timer,但它無法工作。python threading.timer沒有重複功能

這裏ismy代碼:

import threading 

def plus(a,b): 
    print (a+b) 

def repeat(func,interval,*args): 
    threading.Timer(interval, func, args = args).start() 

repeat(plus,1,2,3) 
+1

我看了[docs](https://docs.python.org/3/library/threading.html#timer-objects),我沒有看到它應該重複的地方。在所有可能的情況下,你需要在線程函數中設置一個新的定時器。 –

回答

0

爲了使重複,你需要安裝一個新的計時器每間隔後。

這樣做的一種方法,雖然它有點功能。這可能不是最簡單的方法。

from threading import Timer 
from functools import partial 

def plus(a,b): 
    print (a+b) 

def repeat(func,interval,*args): 

    # call the provided func 
    func(*args) 

    Timer(interval, partial(repeat, func, interval), args=args).start() 

repeat(plus,1,2,3) 

repeat調用你的函數,然後設置計時器。您需要提供interval的正確參數,因此我們需要部分應用它以獲得前兩個參數。