数据结构控制下一步

时间:2018-11-05 02:51:03

标签: python algorithm

我正在学习协程

class Scheduler:
    def __init__(self):
        self.ready = Queue() # a queue of tasks that are ready to run.
        self.taskmap = {} #dictionary that keeps track of all active tasks (each task has a unique integer task ID)

    def new(self, target): #introduce a new task to the scheduler
        newtask = Task(target)
        self.taskmap[newtask.tid] = newtask
        self.schedule(newtask)
        return newtask.tid

    def schedule(self, task):
        self.ready.put(task)

    def mainloop(self):
        while self.taskmap: #does not remove element from taskmap
            task = self.ready.get() self.ready
            result = task.run()
            self.schedule(task)

按计划阅读task = self.ready.get()时,我突然意识到,数据结构的本质与控制有关,以控制下一步,而算法的本质也与控制有关,即对所有步骤进行控制。 / p>

这种理解有意义吗?

1 个答案:

答案 0 :(得分:1)

Queue对象定义对下一步的控制,是的。它是FIFO,如here.

所述

在这里,您似乎只是想跟踪任务,是否还有剩余的,正在执行的等等。这就是“控制所有步骤”。是的。

目前还不清楚目的。数据结构和算法应适合您的目的。 asyncio可以帮助您实现并行性和事件驱动的设计。有时目标是快速有效地将数据从源渲染到数据结构中。在最终目标的背景下(至少对我来说),您所获得的意义更有意义。