Consider the code:
#!/usr/bin/python3

import random
from queue import Queue, PriorityQueue
import matplotlib.pyplot as plt


# ******************************************************************************
# Constants
# ******************************************************************************
#!/usr/bin/python3
class Simulator:
    def __init__(self, service, arrival, sim_time, max_buffer_size = float('inf')):
        self.service = 1/service  # SERVICE is the average service time; service rate = 1/SERVICE
        self.arrival = 1/arrival  # ARRIVAL is the average inter-arrival time; arrival rate = 1/ARRIVAL
        self.load= self.service / self.arrival  # This relationship holds for M/M/1
        self.max_buffer_size = max_buffer_size
        self.type1 = 1
        self.sim_time = sim_time
        self.arrivals=0
        self.users=0
        self.data = None
        self.MM1= None
        self.FES = None
        self.result = None
        self.time = None
        random.seed(42)

    class Measure:
        def __init__(self):
            self.arr = 0
            self.dep = 0
            self.ut = 0
            self.oldT = 0
            self.delay = 0
            self.drop = 0

    class Client:
        def __init__(self, type, arrival_time):
            self.type = type
            self.arrival_time = arrival_time

    class Server:
        def __init__(self):
            self.idle = True
            self.users = 0

    def Arrival(self, time, queue, server_obj):
        server_obj.users += 1

        self.data.arr += 1
        self.data.ut += server_obj.users * (time - self.data.oldT)
        self.data.oldT = time

        inter_arrival = random.expovariate(lambd=1.0 / self.arrival)
        self.FES.put((time + inter_arrival, "arrival"))

        client = self.Client(self.type1, time)

        if len(queue) < self.max_buffer_size:
            queue.append(client)
        else:
            self.data.drop += 1
            server_obj.users -= 1

        if server_obj.idle:
            server_obj.idle = False

            service_time = random.expovariate(1.0 / self.service)

            self.FES.put((time + service_time, "departure", server_obj))

    def Departure(self, time, queue, server_obj):
        self.data.dep += 1
        self.data.ut += server_obj.users * (time - self.data.oldT)
        self.data.oldT = time

        if len(queue) > 0:
            client = queue.pop(0)

            self.data.delay += (time - client.arrival_time)
            server_obj.users -= 1

            if server_obj.users > 0:
                service_time = random.expovariate(1.0 / self.service)
                self.FES.put((time + service_time, "departure", server_obj))
            else:
                server_obj.idle = True
        else:
            server_obj.idle = True

    def run(self):
        self.data = self.Measure()
        self.result = {}
        self.MM1 = []
        self.time = 0
        self.FES = PriorityQueue()
        self.Server1 = self.Server()
        self.Server2 = self.Server()
        self.Server3 = self.Server()
        self.Server4 = self.Server()
        self.servers = [self.Server1, self.Server2, self.Server3, self.Server4]
        self.last_assigned_server = -1
        self.FES.put((0, "arrival"))

        while self.time < self.sim_time:
            (self.time, self.event_type, *server_obj) = self.FES.get()

            if self.event_type == "arrival":
                self.last_assigned_server = (self.last_assigned_server + 1) % len(self.servers)
                selected_server = self.servers[self.last_assigned_server]
                self.Arrival(self.time, self.MM1, selected_server)
            elif self.event_type == "departure":
                self.Departure(self.time, self.MM1, server_obj[0])

        self.users = self.Server1.users + self.Server2.users + self.Server3.users + self.Server4.users

I want to modify it in order to assign users to servers on the order of the server's speed assuming that different servers have different service time. Try to have least modifications to the code and It is preferred to modify the Server class for implementing different server speed