如何在Python中编写后台线程,每隔几分钟就会继续调用一个特定的方法。
让我们说,如果我是第一次启动我的程序,那么它应该立即调用该方法,之后,它应该每隔X分钟继续调用该方法吗?
可以用Python做吗?
我对Python线程没有太多经验。在Java中,我可以使用TimerTask
或ScheduledExecutors
解决此问题,但不确定如何使用Python进行此操作?
在Python中执行此操作的最佳方法是什么?
答案 0 :(得分:2)
例如:
import threading
def print_hello():
print('Hello')
timer = threading.Timer(2, print_hello) # # Call `print_hello` in 2 seconds.
timer.start()
print_hello()
答案 1 :(得分:0)
我认为如果不尝试使用Timer
,这会更容易。直接做:
def my_background_task(seconds_between_calls):
from time import sleep
while keep_going:
# do something
sleep(seconds_between_calls)
...
from threading import Thread
t = Thread(target=my_background_task, args=(5*60,)) # every 5 minutes
keep_going = True
t.start()
...
# and when the program ends
keep_going = False
t.join()
答案 2 :(得分:0)
我在这堂课上好运。您可能希望在time.sleep()之前调用self.func()。
import threading
import time
class PeriodicExecutor(threading.Thread):
def __init__(self, sleep, func, *params):
'Execute func(params) every "sleep" seconds'
self.func = func
self.params = params
self.sleep = sleep
threading.Thread.__init__(self, name = "PeriodicExecutor")
self.setDaemon(True)
def run(self):
while True:
time.sleep(self.sleep)
# if self.func is None:
# sys.exit(0)
self.func(*self.params)