# spacepy.toolbox.do_with_timeout

spacepy.toolbox.do_with_timeout(timeout, target, *args, **kwargs)

  Execute a function (or method) with a timeout.

  Call the function (or method) `target`, with arguments `args` and keyword arguments `kwargs`. Normally return the return value from `target`, but if `target` takes more than `timeout` seconds to execute, raises `TimeoutError`.

  Note

  This is, at best, a blunt instrument. Exceptions from `target` may not propagate properly (tracebacks will be hard to follow.) The function which failed to time out may continue to execute until the interpreter exits; trapping the TimeoutError and continuing normally is not recommended.

  Parameters
    timeout float

      Timeout, in seconds.

    target callable
      Python callable (generally a function, may also be an

        imported ctypes function) to run.

    args sequence

      Arguments to pass to `target`.

    kwargs dict

      keyword arguments to pass to `target`.

  Returns
    out

      return value of `target`

  Raises
    TimeoutError If `target` does not return in `timeout` seconds.

  Examples

      >>> import spacepy.toolbox as tb
      >>> import time
      >>> def time_me_out():
      ...     time.sleep(5)
      >>> tb.do_with_timeout(0.5, time_me_out) #raises TimeoutError