温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python编程实现打印任务监控

发布时间:2024-08-05 13:58:06 来源:亿速云 阅读:92 作者:小樊 栏目:编程语言
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页的速度打印的情况。您可以根据实际需求调整模拟的时间和打印速度。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI