您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
class PrintQueue:
def __init__(self):
self.items = []
def is_empty(self):
return len(self.items) == 0
def enqueue(self, item):
self.items.insert(0, item)
def dequeue(self):
return self.items.pop()
def size(self):
return len(self.items)
class Printer:
def __init__(self, ppm):
self.ppm = ppm
self.current_task = None
self.time_remaining = 0
def tick(self):
if self.current_task is not None:
self.time_remaining -= 1
if self.time_remaining <= 0:
self.current_task = None
def busy(self):
return self.current_task is not None
def start_next(self, new_task):
self.current_task = new_task
self.time_remaining = new_task.get_pages() * 60 / self.ppm
class Task:
def __init__(self, time):
self.time = time
def get_pages(self):
return self.time
def simulation(num_seconds, pages_per_minute):
printer = Printer(pages_per_minute)
print_queue = PrintQueue()
waiting_times = []
for current_second in range(num_seconds):
if new_print_task():
task = Task(random.randint(1, 20))
print_queue.enqueue(task)
if not printer.busy() and not print_queue.is_empty():
next_task = print_queue.dequeue()
waiting_times.append(next_task.time)
printer.start_next(next_task)
printer.tick()
average_wait = sum(waiting_times) / len(waiting_times)
print("Average Wait Time: {:.2f} seconds, {} tasks remaining.".format(average_wait, print_queue.size()))
def new_print_task():
num = random.randint(1, 180)
return num == 180
if __name__ == '__main__':
import random
for i in range(10):
simulation(3600, 5) # Simulate for 1 hour at 5 pages per minute
这段代码实现了一个简单的打印任务监控系统。它模拟了一个打印队列和打印机,根据随机生成的打印任务来模拟打印过程。在主程序中,我们可以调用simulation
函数来运行模拟,输出平均等待时间和剩余任务数。在这里,我们模拟了10次1小时内以每分钟5页的速度打印的情况。您可以根据实际需求调整模拟的时间和打印速度。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。