system.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. from pypdevs.DEVS import CoupledDEVS
  2. # Import all models to couple
  3. from generator import Generator
  4. from queue import Queue
  5. from processor import Processor
  6. from collector import Collector
  7. class QueueSystem(CoupledDEVS):
  8. def __init__(self, mu, size, num, procs):
  9. CoupledDEVS.__init__(self, "QueueSystem")
  10. # Define all atomic submodels of which there are only one
  11. generator = self.addSubModel(Generator(mu, size, num))
  12. queue = self.addSubModel(Queue(len(procs)))
  13. collector = self.addSubModel(Collector())
  14. self.connectPorts(generator.out_event, queue.in_event)
  15. # Instantiate desired number of processors and connect
  16. processors = []
  17. for i, param in enumerate(procs):
  18. processors.append(self.addSubModel(
  19. Processor(i, param)))
  20. self.connectPorts(queue.out_proc[i],
  21. processors[i].in_proc)
  22. self.connectPorts(processors[i].out_finished,
  23. queue.in_finish)
  24. self.connectPorts(processors[i].out_proc,
  25. collector.in_event)
  26. # Make it accessible outside of our own scope
  27. self.collector = collector