我正在学习协程
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>
这种理解有意义吗?
答案 0 :(得分:1)
Queue
对象定义对下一步的控制,是的。它是FIFO,如here.
在这里,您似乎只是想跟踪任务,是否还有剩余的,正在执行的等等。这就是“控制所有步骤”。是的。
目前还不清楚目的。数据结构和算法应适合您的目的。 asyncio
可以帮助您实现并行性和事件驱动的设计。有时目标是快速有效地将数据从源渲染到数据结构中。在最终目标的背景下(至少对我来说),您所获得的意义更有意义。