class_docstr: CSV format benchmark writer.
  
  It writes benchmark statistics taken by :class:`FunctionBenchmark`
  in CSV file format.
  
  Args:
      file (Python file object): The benchmark will be written to the file.
class_docstr_tok: ["CSV","format","benchmark","writer",".","It","writes","benchmark","statistics","taken","by",":","class",":","`","FunctionBenchmark","`","in","CSV","file","format",".","Args",":","file","(","Python","file","object",")",":","The","benchmark","will","be","written","to","the","file","."]
code: def write(self, fb):
      values = [
          fb.module,
          fb.func.__name__,
          fb.func_ins.name,
          repr(fb.inspecs),
          repr(fb.func_args),
          repr(fb.func_kwargs),
          fb.ext,
          repr(fb.ext_kwargs),
      ]
      values.extend(self._stat_as_a_list(fb.setup_stat))
      values.extend(self._stat_as_a_list(fb.forward_stat))
      if fb.backward_stat is not None:
          values.extend(self._stat_as_a_list(fb.backward_stat))
      writer = csv.writer(self.file)
      writer.writerow(values)
  
imports: from __future__ import print_function
  import nnabla
  import nnabla.initializer
  import sys
  import importlib
  import time
  from collections import namedtuple
  import csv
label_desc: Use image node_id 4 for calling the FunctionBenchmarkCsvWriter obj's underlying member method code with example usage: obj.write(fb) without return types