延时任务管理---定时任务管理

手动实现一个任务管理器

这个管理器能够进行任务的添加,任务的延迟执行,
任务类定义

class MyTask(object):
    """task类,封装了要执行的函数 [email protected]"""
	# 需要执行的时间,方法本身,方法的参数
    def __init__(self, time_out, target, *args, **kwargs):
        self.time_out = time_out
        self.target = target
        self.args = args
        self.kwargs = kwargs

	# 调用被封装的方法
    def call(self):
        self.target(*self.args, **self.kwargs)

任务管理类定义

class MyTasks(object):
    """任务管理类,用来对任务延时执行 [email protected]"""
    def __init__(self):
        self.tasks = []
        super(MyTasks, self).__init__()

    def add_task(self, delay, func, *args, **kwargs):
        task = MyTask(time.time() + delay, func, *args, **kwargs)
        self.tasks.append(task)

    def execute_task(self):
        now = time.time()
        length = len(self.tasks)
        remove_index = []
        for i in range(0, length, 1):
            if now >= self.tasks[i].time_out:
                self.tasks[i].call()
                remove_index.append(i)
        if len(remove_index) > 0:
            for index in remove_index:
                self.tasks.remove(self.tasks[index])

至于定时任务,有了上面的抛砖引玉,相信也不难

你可能感兴趣的:(python进阶,设计模式)