Вопрос пользователя:
Ответ нейросети:
import threading
import queue
import time
class Table:
def __init__(self, number):
self.number = number
self.guest = None
def serve(queue, tables):
while not queue.empty() or any(table.guest for table in tables):
for table in tables:
if table.guest and not table.guest.is_alive():
print(f"{table.guest.name} покушал(-а) и ушёл(ушла)")
print(f"Стол номер {table.number} свободен")
table.guest = None
for table in tables:
if not table.guest and not queue.empty():
guest = queue.get()
print(f"{guest.name} вышел(-ла) из очереди и сел(-а) за стол номер {table.number}")
table.guest = guest
guest.start()
print("Обслуживание завершено")
class Guest(threading.Thread):
def __init__(self, name):
super().__init__()
self.name = name
def run(self):
time.sleep(2) # имитация приёма пищи
print(f"{self.name} закончил(-а) приём пищи")
queue = queue.Queue()
queue.put(Guest("Alice"))
queue.put(Guest("Bob"))
queue.put(Guest("Charlie"))
tables = [Table(1), Table(2), Table(3)]
serve_thread = threading.Thread(target=serve, args=(queue, tables))
serve_thread.start()
serve_thread.join()
Этот код создает потоки для гостей, которые будут приходить в ресторан и обедать за столами. Поток serve отслеживает состояние очереди и столов, чтобы обслуживать гостей. Когда гость заканчивает прием пищи, его поток завершается, стол освобождается, и если есть гости в очереди, им предлагается место за столом.
Напишите нам, если в вопросе есть ваши персональные данные ([email protected])
Обратите внимание: ответы, предоставляемые искусственным интеллектом, могут не всегда быть точными. Не рассчитывайте на них в критически важных областях, таких как медицина, юриспруденция, финансы или в вопросах, связанных с безопасностью. Для важных решений всегда обращайтесь к квалифицированным специалистам. Администрация сайта не несет ответственности за контент, сгенерированный автоматически.