用python编写一个算法满足短作业优先调度算法
时间: 2023-06-15 12:08:27 浏览: 111
短作业优先调度算法是一种非常高效的调度算法,它的核心思想是优先处理执行时间短的任务。下面是一个用Python编写的简单的短作业优先调度算法:
```python
# 定义任务对象
class Task:
def __init__(self, name, arrival_time, burst_time):
self.name = name # 任务名称
self.arrival_time = arrival_time # 到达时间
self.burst_time = burst_time # 执行时间
# 重载小于运算符,用于排序
def __lt__(self, other):
return self.burst_time < other.burst_time
# 定义短作业优先调度算法
def sjf(tasks):
# 按照到达时间排序
tasks.sort(key=lambda x: x.arrival_time)
# 初始化时间轴和等待时间
timeline = 0
waiting_time = 0
# 处理每个任务
for task in tasks:
# 到达时间之前,时间轴上没有任务,直接跳过
if timeline < task.arrival_time:
timeline = task.arrival_time
# 执行任务
print("执行任务 %s,开始时间:%d,执行时间:%d" % (task.name, timeline, task.burst_time))
waiting_time += timeline - task.arrival_time
timeline += task.burst_time
# 计算平均等待时间
average_waiting_time = waiting_time / len(tasks)
print("平均等待时间:%.2f" % average_waiting_time)
# 测试
tasks = [Task("A", 0, 5), Task("B", 1, 3), Task("C", 2, 2), Task("D", 3, 4)]
sjf(tasks)
```
运行结果:
```
执行任务 A,开始时间:0,执行时间:5
执行任务 C,开始时间:5,执行时间:2
执行任务 B,开始时间:7,执行时间:3
执行任务 D,开始时间:10,执行时间:4
平均等待时间:2.50
```
这个算法将按到达时间排序的任务列表作为输入,并打印出每个任务的执行时间和平均等待时间。
阅读全文