code: def start(self):
      while True:
          logging.info(f"Running test {self._total_executions}")
          file_name = self._data_handler.generate_input()
          try:
              self._start_time = datetime.datetime.now()
              if self.params is None:
                  self._target(file_name)
              else:
                  self._data_handler.set_rand_params(self.params)
                  kwargs = self._data_handler._current_params[
                      "test_kwargs"
                  ]
                  logging.info(f"Parameters passed: {str(kwargs)}")
                  self._target(file_name, **kwargs)
          except KeyboardInterrupt:
              logging.info(
                  f"Keyboard Interrupt encountered, stopping after "
                  f"{self.runs} runs."
              )
              sys.exit(0)
          except Exception as e:
              logging.exception(e)
              self.write_crash(traceback.format_exc())
          self.log_stats()
          if self.runs != -1 and self._total_executions >= self.runs:
              logging.info(f"Completed {self.runs}, stopping now.")
              break
  
          self._total_executions += 1
  
file_path: cudf/python/cudf/cudf/_fuzz_testing/fuzzer.py
imports: import datetime
  import json
  import logging
  import os
  import sys
  import traceback
label_desc: Use image node_id 4 for calling the Fuzzer obj's underlying member method code with example usage: obj.start() without return types