Я пытаюсь создать программу, которая имитирует выезд в магазине. Я разрешаю пользователям вводить кучу данных, а затем передаю их в свою функцию, которая запускает симуляцию. Я использую класс Queue, который я создал и работает для того, что мне нужно для (FIFO). Моя проблема возникает, когда я пытаюсь заставить клиента, который входит в очередь на открытый сервер, а затем в конечном итоге удаляется из очереди. Как только они исчезнут, сервер выберет следующего клиента из очереди и так далее.Python Checkout Simulation
Ниже мой код, что я до сих пор ..
from queue_array import Queue
from customer import Customer
from server import Server
import random, copy
def line_up (total_time, num_servers, max_num_clients_per_min, max_service, min_service, freakout_chance, min_freak, max_freak):
q = Queue()
s = []
customer_id = 0
server_id = 0
max_queue_size = 0
serving = 0
customers_served = 0
is_serving = False
for _se in range(num_servers):
server = Server(server_id, None)
s.append(server)
server_id += 1
#loop through each minute
for time in range(0, total_time + 1):
print ("Time = {}".format(time))
num_join = random.randint(0, max_num_clients_per_min)
#Determine when customer joins the queue
for _i in range(0, num_join):
print (" Client {} joins the queue.".format(customer_id))
service_length = random.randint(min_service, max_service)
f = random.randint(1, freakout_chance)
if f == 1:
freak = True
else:
freak = False
customer = Customer(customer_id, copy.deepcopy(time), service_length, freak)
q.insert(customer)
customer_id += 1
if len(q) > max_queue_size:
max_queue_size = len(q)
for serve in s:
if serve.client is None:
n = serve.number
print (" Server {} starting to serve Client {}".format(n, q.peek().number))
line_up(5, 3, 2, 5, 1, 1000, 0, 5)
Так что этот код здесь призывает моего класса Queue Aswell как некоторые другие маленькие классы, которые я сделал. Я не включаю их, потому что я не думаю, что мне нужно включить их для чего мне нужна помощь.
Мой вопрос: как я могу получить серверы, которые я поместил в список, чтобы вытащить клиента из очереди по одному за каждым, а затем, как только они будут выполнены, удалите их из очереди и возьмите следующий.
Надеюсь, что я был чист, прокомментируйте, если вам нужно больше разъяснений.