先来先服务算法Python实现
时间: 2024-01-07 12:21:43 浏览: 189
以下是Python实现先来先服务算法的示例代码:
```python
# 定义进程类
class Process:
def __init__(self, pid, arrive_time, burst_time):
self.pid = pid # 进程ID
self.arrive_time = arrive_time # 到达时间
self.burst_time = burst_time # 执行时间
# 先来先服务算法
def fcfs(processes):
n = len(processes)
# 按照到达时间排序
processes.sort(key=lambda x: x.arrive_time)
# 计算等待时间和周转时间
wait_time = [0] * n
turnaround_time = [0] * n
wait_time[0] = 0
turnaround_time[0] = processes[0].burst_time
for i in range(1, n):
wait_time[i] = wait_time[i-1] + processes[i-1].burst_time - processes[i].arrive_time + processes[i-1].arrive_time
turnaround_time[i] = turnaround_time[i-1] + processes[i].burst_time
# 计算平均等待时间和平均周转时间
avg_wait_time = sum(wait_time) / n
avg_turnaround_time = sum(turnaround_time) / n
# 输出结果
print("Process\tArrival Time\tBurst Time\tWaiting Time\tTurnaround Time")
for i in range(n):
print(f"{processes[i].pid}\t\t{processes[i].arrive_time}\t\t{processes[i].burst_time}\t\t{wait_time[i]}\t\t{turnaround_time[i]}")
print(f"Average waiting time: {avg_wait_time:.2f}")
print(f"Average turnaround time: {avg_turnaround_time:.2f}")
# 测试
if __name__ == '__main__':
processes = [Process(1, 0, 5), Process(2, 1, 3), Process(3, 2, 8), Process(4, 3, 6)]
fcfs(processes)
```
该示例代码定义了一个进程类,包含进程ID、到达时间和执行时间三个属性。然后定义了一个先来先服务算法的函数fcfs,该函数接受一个进程列表作为参数,按照到达时间排序,计算等待时间和周转时间,并输出结果。最后在测试中创建了一个进程列表,调用fcfs函数进行测试。
阅读全文