python实现插队算法
时间: 2023-06-20 17:06:55 浏览: 72
插队算法是一种动态调度算法,常用于操作系统的进程调度中。其核心思想是将优先级高的任务插入到正在执行的任务之前,以提高系统的响应速度。
以下是一份Python实现的简单插队算法示例代码:
```python
class Process:
def __init__(self, name, priority):
self.name = name
self.priority = priority
def __str__(self):
return self.name
class Queue:
def __init__(self):
self.items = []
def is_empty(self):
return not bool(self.items)
def enqueue(self, item):
self.items.insert(0, item)
def dequeue(self):
return self.items.pop()
def size(self):
return len(self.items)
class Scheduler:
def __init__(self):
self.queue = Queue()
def add_process(self, process):
self.queue.enqueue(process)
def run(self):
while not self.queue.is_empty():
current_process = self.queue.dequeue()
print('Running process:', current_process)
# 插队
for i in range(self.queue.size()):
next_process = self.queue.dequeue()
if next_process.priority > current_process.priority:
self.queue.enqueue(current_process)
current_process = next_process
else:
self.queue.enqueue(next_process)
print('Finished process:', current_process)
if __name__ == '__main__':
# 创建进程
p1 = Process('p1', 3)
p2 = Process('p2', 2)
p3 = Process('p3', 1)
# 创建调度器
scheduler = Scheduler()
# 添加进程到调度器
scheduler.add_process(p1)
scheduler.add_process(p2)
scheduler.add_process(p3)
# 运行调度器
scheduler.run()
```
在这个示例代码中,我们定义了一个Process类来表示进程,包括名称和优先级两个属性。Queue类用于实现队列,Scheduler类则是我们的调度器。
在调度器中,我们使用了一个队列来保存我们的进程,run()方法会循环执行队列中的进程,每次执行完一个进程后,会检查队列中是否还有进程等待执行,如果有,就会对其进行插队调度。如果下一个进程的优先级高于当前进程,那么它就会直接插到当前进程前面,以保证高优先级进程能够优先执行。
这是一个简单的插队算法实现,实际应用中可能需要更加复杂的优化和调整。