'Start running function every interval seconds.
@param interval: The number of seconds between calls.  May be
less than one.  Precision will depend on the underlying
platform, the available hardware, and the load on the system.
@param now: If True, run this call right now.  Otherwise, wait
until the interval has elapsed before beginning.
@return: A Deferred whose callback will be invoked with
C{self} when C{self.stop} is called, or whose errback will be
invoked when the function raises an exception or returned a
deferred that has its errback invoked.'

def start(self, interval, now=True):

    assert (not self.running), 'Tried    to    start    an    already    running    LoopingCall.'
    if (interval < 0):
        raise ValueError('interval    must    be    >=    0')
    self.running = True
    deferred = self._deferred = defer.Deferred()
    self.starttime = self.clock.seconds()
    self.interval = interval
    self._runAtStart = now
    if now:
        self()
    else:
        self._scheduleFrom(self.starttime)
    return deferred
