python设置打印机参数_【Python】(六)用队列实现对打印机使用情况的模拟

python实现队列的代码回顾

class Queue():

# Queue() 创建一个空的新队列。 它不需要参数,并返回一个空队列。

def __init__(self):

self.items = []

# enqueue(item) 将新项添加到队尾。 它需要 item 作为参数,并不返回任何内容。

def enqueue(self, item):

self.items.insert(0, item)

# dequeue() 从队首移除项。它不需要参数并返回 item。 队列被修改。

def dequeue(self):

item = self.items.pop()

return item

# isEmpty() 查看队列是否为空。它不需要参数,并返回布尔值。

def isEmpty(self):

return 0 == len(self.items)

# size() 返回队列中的项数。它不需要参数,并返回一个整数。

def size(self):

length = len(self.items)

return length

问题描述

假设实验室里有一台打印机供学生共性。当学生向共享打印机发送打印任务时,任务被放置在队列中以便以先来先服务的方式被处理。如何才能通过python程序模拟的方式得到每次提交任务的平均等待时间呢?(平均等待时间不包括打印本身的时间,仅指在队列中排队的时间。)

我们假定:

学生们每次打印的页数在1到20页之间。

打印机平均每小时会收到20个打印请求,即平均每180秒1个请求。

每秒新增任务的可能性相等,即任务的产生为独立同分布

打印机的打印速度恒定。

总体模拟思路

当学生提交打印任务时,我们将把他们添加到打印任务的等待队列。当打印机完成任务时,它将检查队列,将剩余的任务中队首的那一个弹出并处理。学生等待他们的任务打印的平均时间也等于任务在队列中等待的平均时间。

我们将对每个任务入队和出队的时间戳进行记录,由此得到该任务在队列中的等待时间。

对任务的模拟

任务类应包括以下几个功能:随机生成页数、记录入队时间戳、返回需要打印的页数、根据当前时间戳返回等待的时间。

class Task:

#任务初始化

def __init__(self, time):

# time 为传入的任务创建时间,也就是入队时间

self.in_time = time

self.pages = random.randrange(1,21) # 随机生成1到20页之间的页数

#返回任务需要打印的页数

def getPage(self):

return self.pages

def waitTime(self, out_time):

# out_time为当前时间戳

return out_time - self.in_time

对打印机的模拟

打印机类应包括以下几个功能:设定打印速度(多少秒每页)、载入新任务并计算新任务剩余打印时间、记录当前任务的剩余打印时间、打

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值