class_docstr: This worker will send requests to a backend process, and measure the
  throughput and latency of those requests as well as GPU utilization.
docstr: This function will send one warmup request, and then num_iters requests
  to the backend process.
docstr_tok: ["This","function","will","send","one","warmup","request",",","and","then","num_iters","requests","to","the","backend","process","."]
code: def _send_requests(self):
      """
      This function will send one warmup request, and then num_iters requests
      to the backend process.
      """
  
      fake_data = torch.randn(
          self.batch_size, 3, 250, 250, requires_grad=False
      )
      other_data = [
          torch.randn(self.batch_size, 3, 250, 250, requires_grad=False)
          for i in range(self.num_iters)
      ]
  
      # Send one batch of warmup data
      self.request_queue.put((fake_data, time.time()))
      # Tell backend to poll queue for warmup request
      self.read_requests_event.set()
      self.warmup_event.wait()
      # Tell backend to poll queue for rest of requests
      self.read_requests_event.set()
  
      # Send fake data
      self.start_send_time = time.time()
      for i in range(self.num_iters):
          self.request_queue.put((other_data[i], time.time()))
  
imports: import argparse
  import asyncio
  import os.path
  import subprocess
  import threading
  import time
  from concurrent.futures import ThreadPoolExecutor
  from queue import Empty
  import numpy
  import pandas
  import torch
  import torch.multiprocessing
label_desc: Use image node_id 4 for calling the FrontendWorker obj's underlying member method code with example usage: obj._send_requests() without return types