docs: def non_blocking(func):
      """Decorator to run a function in a different thread.
      It can be used to execute a command in a non-blocking way
      like this::
  
          @non_blocking
          def add_one(n):
              print 'starting'
              import time
              time.sleep(2)
              print 'ending'
              return n+1
  
          thread = add_one(5) # Starts the function
          result = thread.join() # Waits for it to complete
          print result
      """
      from functools import wraps
      @wraps(func)
      def non_blocking_version(*args, **kwargs):
          t = ReturnThread(target=func, args=args, kwargs=kwargs)
          t.start()
          return t
      return non_blocking_version