Возможно, вы захотите взглянуть на
https://simpy.readthedocs.io/en/latest/topical_guides/resources.html#res-type-store
from collections import namedtuple
Machine = namedtuple('Machine', 'size, duration')
m1 = Machine(1, 2) # Small and slow
m2 = Machine(2, 1) # Big and fast
env = simpy.Environment()
machine_shop = simpy.FilterStore(env, capacity=2)
machine_shop.items = [m1, m2] # Pre-populate the machine shop
def user(name, env, ms, size):
machine = yield ms.get(lambda machine: machine.size == size)
print(name, 'got', machine, 'at', env.now)
yield env.timeout(machine.duration)
yield ms.put(machine)
print(name, 'released', machine, 'at', env.now)
users = [env.process(user(i, env, machine_shop, (i % 2) + 1))
for i in range(3)]
env.run()
Что касается коробки и комнаты, я предлагаю вам использовать 2 разных ресурса - хранилище (класс ресурсов) длясмоделируйте это.
a) комната свободна;(Проверьте, является ли хранилище ресурсов для комнаты пустым)
b) в очереди есть адрес, адресованный этой комнате, (определите поле и комнату в именованном кортеже), вы можете использовать get_queue для проверки
в) ремень для доступа в комнату свободен (аналогично пункту а)