view light8/updatefreq.py @ 151:990a9474d0e7

early cue stuff. the CueList will supply the CueFader with the cues to early cue stuff. the CueList will supply the CueFader with the cues to work with, and will do crossfading sooner or later. the format of cues is still very open. cuelist1 is a bogus cuelist for testing.
author dmcc
date Sun, 06 Jul 2003 16:33:06 +0000
parents 57809e0ef359
children
line wrap: on
line source

"""calculates your updates-per-second"""

import time

class Updatefreq:
    """make one of these, call update() on it as much as you want,
    and then float() or str() the object to learn the updates per second.

    the samples param to __init__ specifies how many past updates will
    be stored.  """
    
    def __init__(self,samples=20):
        self.times=[0]
        self.samples=samples

    def update(self):

        """call this every time you do an update"""
        self.times=self.times[-self.samples:]
        self.times.append(time.time())

    def __float__(self):
        
        """a cheap algorithm, for now, which looks at the first and
        last times only"""

        try:
            hz=len(self.times)/(self.times[-1]-self.times[0])
        except ZeroDivisionError:
            return 0
        return hz
    def __str__(self):
        return "%.2fHz"%float(self)