剩余材料最短python
时间: 2023-11-17 18:02:22 浏览: 36
剩余材料最短(Shortest Remaining Time)是一种进程调度算法,它是基于抢占式的优先级调度算法,它会选择剩余时间最短的进程来执行。在Python中实现剩余材料最短算法可以按照以下步骤进行:
```python
# 定义一个进程类
class Process:
def __init__(self, pid, arrival_time, burst_time):
self.pid = pid # 进程ID
self.arrival_time = arrival_time # 到达时间
self.burst_time = burst_time # 执行时间
self.remaining_time = burst_time # 剩余时间
# 定义剩余材料最短函数
def SRT(processes):
n = len(processes)
current_time = 0 # 当前时间
completed = 0 # 已完成的进程数
queue = [] # 进程队列
result = [] # 执行结果
while completed != n:
# 将到达时间小于等于当前时间的进程加入队列
for i in range(n):
if processes[i].arrival_time <= current_time and processes[i] not in queue and processes[i].remaining_time > 0:
queue.append(processes[i])
# 如果队列为空,则时间跳转到下一个进程的到达时间
if not queue:
current_time = processes[completed].arrival_time
continue
# 选择剩余时间最短的进程
shortest = queue[0]
for i in range(1, len(queue)):
if queue[i].remaining_time < shortest.remaining_time:
shortest = queue[i]
# 执行进程
shortest.remaining_time -= 1
current_time += 1
# 如果进程执行完毕,则将其从队列中移除,并记录执行结果
if shortest.remaining_time == 0:
completed += 1
queue.remove(shortest)
result.append((shortest.pid, current_time))
return result
```