在给定时间安排一个函数运行 - Python

时间:2017-09-11 14:23:40

标签: python scheduled-tasks schedule

我一直在寻找Python中的不同时间表,例如Sched(我是Windows用户)等。但是我无法抓住它并且我不知道是否可能。我的计划是制作如下图:

My own UML

我们可以看到时间:00.21是等我希望程序执行功能的时间2但是功能1应该添加到我已经在列表中尽可能多的列表中,因为它在2分钟之前工作计时器命中。基本上...

功能1在定时器前2分钟执行其功能。当它击中00:21然后停止函数1并执行函数2,它接受List并在其自己的函数中使用它,并在完成时完成。

但是,我不知道该怎么做或开始。我想要做一个自己的计时器,但感觉这不是解决方案。你们有什么建议?

1 个答案:

答案 0 :(得分:0)

我想我会通过创建一个子类threading.Thread的类来解决这样的问题。从那里,您使用要执行的功能覆盖run方法,在这种情况下,将把东西放入列表中。然后,在main中,您启动该线程,然后调用sleep。这个课程看起来像这样:

class ListBuilder(threading.Thread):
    def__init__(self):
        super().__init__()
        self._finished = False

        self.lst = []

    def get_data():
        # This is the data retrieval function
        # It could be imported in, defined outside the class, or made static.

    def run(self):
        while not self._finished:
            self.lst.append(self.get_data())

    def stop(self):
        self._finished = True

您的main看起来像

import time

if __name__ == '__main__':
    lb = ListBuilder()
    lb.start()

    time.sleep(120)  # sleep for 120 seconds, 2 minutes

    lb.stop()
    time.sleep(.1)  # A time buffer to make sure the final while loop finishes
                    # Depending on how long each while loop iteration takes,
                    # it may not be necessary or it may need to be longer

    do_stuf(lb.lst)  # performs actions on the resulting list

现在,您所要做的就是使用Windows任务计划程序在00:19运行它,您应该设置它。