Ejemplo n.º 1
0
Archivo: disk.py Proyecto: 2xR/legacy
class RequestQueue(Process):
    def reset(self):
        self.queue = []
        self.size = Checkable(0)
        self.pending = TSeries(storing=True, time_fnc=self.sim.clock.get)
        self.qtime = Tally() # queueing time
        self.stime = Tally() # service time
        self.rtime = Tally() # response time
        
    def put(self, io_request):
        self.queue.append(io_request)
        self.size.set(len(self.queue))
        self.pending.collect(len(self.queue))
        
    def get(self):
        io_request = self.queue.pop(0)
        self.size.set(len(self.queue))
        self.pending.collect(len(self.queue))
        return io_request
        
    def collect(self, io_request):
        # Collect indicators about a departing request.
        self.qtime.collect(io_request.queueing_time())
        self.stime.collect(io_request.service_time())
        self.rtime.collect(io_request.response_time())
        
    def finalize(self):
        print "Mean queue size (weighted):", self.pending.wmean()
        print "Mean queueing time:", self.qtime.mean()
        print "Mean service time:", self.stime.mean()
        print "Mean responese time:", self.rtime.mean()
        self.plotter = Plotter()
        self.pending.run_chart(axes=self.plotter, label="Pending requests", legend=True)
Ejemplo n.º 2
0
class Queue(Process):
    content = None
    
    def reset(self):
        self.content = []
        self.size = Checkable(0)
        self.size_tseries = TSeries(time_fnc=self.sim.clock.get, storing=True)
        self.size_tseries.collect(0)
        self.category_ftable = FTable()
        Consumer.waiting_time.clear()
        
    def status(self):
        return self.content
        
    def put(self, obj):
        self.content.append(obj)
        self.size.set(len(self.content))
        self.size_tseries.collect(len(self.content))
        self.category_ftable.collect(obj)
        
    def get(self):
        obj = self.content.pop(0)
        self.size.set(len(self.content))
        self.size_tseries.collect(len(self.content))
        return obj
        
    def finalize(self):
        p = self.plotter = Plotter(rows=1, cols=2)
        Consumer.waiting_time.histogram(axes=p, title="Consumer waiting time")
        self.category_ftable.pie_chart(axes=p, title="Production distribution")
        self.size_tseries.run_chart(axes=p, title="Queue size time series",
                                    label="Queue size", color="green", legend=True)
Ejemplo n.º 3
0
Archivo: virus.py Proyecto: 2xR/legacy
class VirusSim(Simulator):
    def reset(self):
        self.clock.precision = 0.5
        self.members.clear()
        Virus.autoname_reset()
        for _ in xrange(Virus.initial_population):
            self.members.add(Virus())
        self.count = TSeries(storing=True, time_fnc=self.clock.get)
        self.count.collect(len(self.members))
        
    @Chain
    def initialize(self):
        # Print time if trace is disabled.
        if not self.stack.trace:
            while True:
                print "%10.6f: %d viruses" % (self.time, len(self.members)) 
                yield 10
                
    def finalize(self):
        axes = self.count.run_chart(label="Registered growth", 
                                    title="Virus population", 
                                    legend=True)
        self.plotter = axes.figure.plotter
        print "\n" + self.count.report()