'Run target (passed to the constructor).  No point in calling this
function directly.  Call start() to make this function run in a new
thread.'

def run(self):

    self._e = None
    self._retval = None
    try:
        self._retval = self._target(*self._args, **self._kwargs)
    except Exception:
        self._e = sys.exc_info()
        raise
    finally:
        del self._target, self._args, self._kwargs
