繁体   English   中英

经过一段时间后运行python函数。 使用线程计时器,它只运行一次然后停止

[英]Running a python function after a certain time passes. Using Threading Timer, however it only runs once and then stops

我试图在我的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) 我在调用executor函数时传入file_name

您还没有详细说明您的实际问题是什么,您希望多次运行哪些代码? 你能展示实际调用这个函数的代码吗?

当您调用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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM