class_docstr: Helper object that defines how to accumulate values of a given type.
  
  Examples
  --------
  >>> from pyspark.accumulators import AccumulatorParam
  >>> class VectorAccumulatorParam(AccumulatorParam):
  ...     def zero(self, value):
  ...         return [0.0] * len(value)
  ...     def addInPlace(self, val1, val2):
  ...         for i in range(len(val1)):
  ...              val1[i] += val2[i]
  ...         return val1
  >>> va = sc.accumulator([1.0, 2.0, 3.0], VectorAccumulatorParam())
  >>> va.value
  [1.0, 2.0, 3.0]
  >>> def g(x):
  ...     global va
  ...     va += [x] * 3
  ...
  >>> rdd = sc.parallelize([1,2,3])
  >>> rdd.foreach(g)
  >>> va.value
  [7.0, 8.0, 9.0]
docstr: Add two values of the accumulator's data type, returning a new value;
  for efficiency, can also update `value1` in place and return it.
docstr_tok: ["Add","two","values","of","the","accumulator","'s","data","type",",","returning","a","new","value",";","for","efficiency",",","can","also","update","`","value1","`","in","place","and","return","it","."]
code: def addInPlace(self, value1: T, value2: T) -> T:
      """
      Add two values of the accumulator's data type, returning a new value;
      for efficiency, can also update `value1` in place and return it.
      """
      raise NotImplementedError
  
imports: import sys
  import select
  import struct
  import socketserver
  import threading
  from typing import Callable, Dict, Generic, Tuple, Type, TYPE_CHECKING, TypeVar, Union
  from pyspark.serializers import read_int, CPickleSerializer
  from pyspark.errors import PySparkRuntimeError
label_desc: Use image node_id 2 for calling the AccumulatorParam obj's underlying member method code with example usage: obj.addInPlace(value1, value2) without return types