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

标签 python timer python-3.4

我正在尝试在 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方法,完成后退出。在我看来,您没有任何东西可以使主线程保持事件状态(也就是说,在调用执行程序后您没有更多代码)。

这是一个小示例,展示了如何使用计时器在主线程仍在工作时执行任务。您可以继续输入内容,打印语句将显示自您上次输入内容以来完成的所有线程。

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)

关于python - 经过一定时间后运行 python 函数。使用线程定时器,但它只运行一次然后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37711458/

相关文章:

python - 将 Python 抓取结果导出到 CSV

python - 根据条件将列表分成子列表

java - java中的定时器( Action 延迟)

pyqt4 - 名称 unicode 未定义 python3

python - python 3.4 向后兼容 python 3.3 吗?

python - 使用 Python 验证电子邮件地址

python - 如何从python中的csv文件中提取字符串

java - 如何在 Java 中正确处理定时器?

java - 尝试存储变量的先前值然后更新,但它只是存储当前值? java

python - 根据 Python 中的 CPU 使用率更改要生成的进程数