code: def add_data(data: np.ndarray, jvalue, func_add, bigdl_type="float"):
      size = getsizeof(data)
      batch_num = math.ceil(size / MAX_MSG_SIZE)
      data_per_batch = math.ceil(data.shape[0] / batch_num)
      for i in range(batch_num):
          idx = i * data_per_batch
          data_batch = (
              data[idx : idx + data_per_batch, ...]
              if i != batch_num - 1
              else data[idx:, ...]
          )
          ts = time.time()
          data_batch, _ = convert_to_jtensor(data_batch)
          te_convert = time.time()
          logging.info(f"numpy to jtensor time: {te_convert - ts}")
          callBigDlFunc(bigdl_type, func_add, jvalue, data_batch)
          te_add = time.time()
          logging.info(f"call add data time: {te_add - te_convert}")
  
imports: import time
  import numpy
  from sys import getsizeof
  import math
  from bigdl.dllib.utils.common import *
  from bigdl.ppml.fl.data_utils import convert_to_jtensor
label_desc: Use image node_id 1 for calling a global function with example usage: add_data(data, jvalue, func_add, bigdl_type) without return types