code: def image_enqueue(redis_args, img_num, proc_num, path, encrypt):
      print("Entering enqueue")
      input_api = InputQueue(**redis_args)
      img = cv2.imread(path)
      img = cv2.resize(img, (224, 224))
      data = cv2.imencode(".jpg", img)[1]
      img_encoded = base64.b64encode(data).decode("utf-8")
      if encrypt:
          img_encoded = encrypt_with_AES_GCM(
              img_encoded, "secret", "salt"
          )
          print("Record encoded")
  
      img_per_proc = int(img_num / proc_num)
      procs = []
  
      def push_image(image_num, index, proc_id):
          print("Entering enqueue", proc_id)
          for i in range(image_num):
              input_api.enqueue(
                  "my-img-" + str(i + index), t={"b64": img_encoded}
              )
  
      start = time.time()
      for i in range(proc_num):
          proc = Process(
              target=push_image,
              args=(
                  img_per_proc,
                  i * img_per_proc,
                  i,
              ),
          )
          procs.append(proc)
          proc.start()
  
      for p in procs:
          p.join()
  
      end = time.time()
      print(img_num, "images enqueued")
      print("total enqueue time:", end - start)
      fps = img_num / (end - start)
      print("enqueue fps:", fps)
  
      return start
  
file_path: analytics-zoo/scripts/cluster-serving/perf-benchmark/e2e_throughput.py
imports: from zoo.serving.client import InputQueue, OutputQueue
  from zoo.common.encryption_utils import encrypt_with_AES_GCM
  import os
  import cv2
  import json
  import time
  from optparse import OptionParser
  import base64
  from multiprocessing import Process
  import redis
  import yaml
  import argparse
  from numpy import *
label_desc: Use image node_id 2 for calling a global function with example usage: image_enqueue(redis_args, img_num, proc_num, path, encrypt) and returns: start