class_docstr: Vectorized environment that runs multiple environments in parallel.
  
  It uses ``multiprocessing`` processes, and pipes for communication.
  
  Example::
  
      >>> import gym
      >>> env = gym.vector.AsyncVectorEnv([
      ...     lambda: gym.make("Pendulum-v0", g=9.81),
      ...     lambda: gym.make("Pendulum-v0", g=1.62)
      ... ])
      >>> env.reset()
      array([[-0.8286432 ,  0.5597771 ,  0.90249056],
             [-0.85009176,  0.5266346 ,  0.60007906]], dtype=float32)
class_docstr_tok: ["Vectorized","environment","that","runs","multiple","environments","in","parallel",".","It","uses","``","multiprocessing","``","processes",",","and","pipes","for","communication",".","Example",":",":",">",">",">","import","gym",">",">",">","env","=","gym.vector.AsyncVectorEnv","(","[","...","lambda",":","gym.make","(","``","Pendulum-v0","''",",","g=9.81",")",",","...","lambda",":","gym.make","(","``","Pendulum-v0","''",",","g=1.62",")","...","]",")",">",">",">","env.reset","(",")","array","(","[","[","-0.8286432",",","0.5597771",",","0.90249056","]",",","[","-0.85009176",",","0.5266346",",","0.60007906","]","]",",","dtype=float32",")"]
docstr: Send calls to the :obj:`reset` methods of the sub-environments.
  
  To get the results of these calls, you may invoke :meth:`reset_wait`.
  
  Args:
      seed: List of seeds for each environment
      options: The reset option
  
  Raises:
      ClosedEnvironmentError: If the environment was closed (if :meth:`close` was previously called).
      AlreadyPendingCallError: If the environment is already waiting for a pending call to another
          method (e.g. :meth:`step_async`). This can be caused by two consecutive
          calls to :meth:`reset_async`, with no call to :meth:`reset_wait` in between.
docstr_tok: ["Send","calls","to","the",":","obj",":","`","reset","`","methods","of","the","sub-environments",".","To","get","the","results","of","these","calls",",","you","may","invoke",":","meth",":","`","reset_wait","`",".","Args",":","seed",":","List","of","seeds","for","each","environment","options",":","The","reset","option","Raises",":","ClosedEnvironmentError",":","If","the","environment","was","closed","(","if",":","meth",":","`","close","`","was","previously","called",")",".","AlreadyPendingCallError",":","If","the","environment","is","already","waiting","for","a","pending","call","to","another","method","(","e.g",".",":","meth",":","`","step_async","`",")",".","This","can","be","caused","by","two","consecutive","calls","to",":","meth",":","`","reset_async","`",",","with","no","call","to",":","meth",":","`","reset_wait","`","in","between","."]
code: def reset_async(
      self,
      seed: Optional[Union[int, List[int]]] = None,
      options: Optional[dict] = None,
  ):
      """Send calls to the :obj:`reset` methods of the sub-environments.
  
      To get the results of these calls, you may invoke :meth:`reset_wait`.
  
      Args:
          seed: List of seeds for each environment
          options: The reset option
  
      Raises:
          ClosedEnvironmentError: If the environment was closed (if :meth:`close` was previously called).
          AlreadyPendingCallError: If the environment is already waiting for a pending call to another
              method (e.g. :meth:`step_async`). This can be caused by two consecutive
              calls to :meth:`reset_async`, with no call to :meth:`reset_wait` in between.
      """
      self._assert_is_running()
  
      if seed is None:
          seed = [None for _ in range(self.num_envs)]
      if isinstance(seed, int):
          seed = [seed + i for i in range(self.num_envs)]
      assert len(seed) == self.num_envs
  
      if self._state != AsyncState.DEFAULT:
          raise AlreadyPendingCallError(
              f"Calling `reset_async` while waiting for a pending call to `{self._state.value}` to complete",
              self._state.value,
          )
  
      for pipe, single_seed in zip(self.parent_pipes, seed):
          single_kwargs = {}
          if single_seed is not None:
              single_kwargs["seed"] = single_seed
          if options is not None:
              single_kwargs["options"] = options
  
          pipe.send(("reset", single_kwargs))
      self._state = AsyncState.WAITING_RESET
  
imports: import multiprocessing
  import sys
  import time
  from copy import deepcopy
  from enum import Enum
  from typing import List, Optional, Sequence, Tuple, Union
  import numpy
  import gym
  from gym import logger
  from gym.core import ObsType
  from gym.error import AlreadyPendingCallError, ClosedEnvironmentError, CustomSpaceError, NoAsyncCallError
  from gym.vector.utils import CloudpickleWrapper, clear_mpi_env_vars, concatenate, create_empty_array, create_shared_memory, iterate, read_from_shared_memory, write_to_shared_memory
  from gym.vector.vector_env import VectorEnv
label_desc: Use image node_id 2 for calling the AsyncVectorEnv obj's underlying member method code with example usage: obj.reset_async(seed, options) without return types