for the "func" invocation.
  * **timeout** (*float**, **optional*) -- timeout in seconds to
    use for this RPC. If the RPC does not complete in this amount
    of time, an exception indicating it has timed out will be
    raised. A value of 0 indicates an infinite timeout, i.e. a
    timeout error will never be raised. If not provided, the
    default value set during initialization or with
    "_set_rpc_timeout" is used.

Returns:
      Returns the result of running "func" with "args" and "kwargs".
Example::
      Make sure that "MASTER_ADDR" and "MASTER_PORT" are set properly
      on both workers. Refer to "init_process_group()" API for more
      details. For example,
  export MASTER_ADDR=localhost export MASTER_PORT=5678

  Then run the following code in two different processes:

  >>> # On worker 0:
  >>> import torch
  >>> import torch.distributed.rpc as rpc
  >>> rpc.init_rpc("worker0", rank=0, world_size=2)
