我正在尝试在我的python文件中运行一个特定的函数。但是,当我使用调用所述函数的计时器运行该方法时,它会执行它应该执行的所有操作,但在第一次之后退出该作业。我需要它在指定的时间后继续运行该函数。
这是包含计时器的函数:
def executor(file): x = datetime.today() y = x.replace(day=x.day, hour=x.hour, minute=x.minute, second=x.second+10, microsecond=0) delta_t = y-x secs = delta_t.seconds+1 t = Timer(secs, parse_file, [file]) t.start()
我要调用的函数是parse_file(file_name)
。
我在调用file_name
函数时传递executor
。
答案 0 :(得分:3)
您还没有详细说明您的实际问题是什么,您想要多次运行哪些代码?你能展示实际调用这个函数的代码吗?
当您调用start时,主线程将从该位置继续执行,而您计划的任务将在指定时间调用parse_file方法,并在完成后退出。对我来说听起来就像你没有任何让你的主线保持活力的东西(也就是说,在你召唤执行者之后你不再拥有任何代码)。
这是一个小例子,展示了如何在主线程仍在工作时使用Timer执行任务。您可以继续输入输入,print语句将显示自您上次输入输入以来完成的所有线程。
from threading import Timer
import sys
def scheduled_task(arg):
print("\ntask complete arg %s!\n"%(arg))
def run_scheduled_task(arg):
timer = Timer(10, scheduled_task, [arg])
timer.start()
done = False
while not done:
user_input = input("Give me some input (exit to stop): ")
if user_input == 'exit':
print('Exiting')
done = True
else:
run_scheduled_task(user_input)