code: def printProfile(self, reset=False):
      
      print "Profiling information for {}".format(type(self).__name__)
      totalTime = 0.000001
      for region in self.network.regions.values():
        timer = region.getComputeTimer()
        totalTime += timer.getElapsed()
  
      # Sort the region names
      regionNames = list(self.network.regions.keys())
      regionNames.sort()
  
      count = 1
      profileInfo = []
      L2Time = 0.0
      L4Time = 0.0
      for regionName in regionNames:
        region = self.network.regions[regionName]
        timer = region.getComputeTimer()
        count = max(timer.getStartCount(), count)
        profileInfo.append([region.name,
                            timer.getStartCount(),
                            timer.getElapsed(),
                            100.0 * timer.getElapsed() / totalTime,
                            timer.getElapsed() / max(timer.getStartCount(), 1)])
        if "L2Column" in regionName:
          L2Time += timer.getElapsed()
        elif "L4Column" in regionName:
          L4Time += timer.getElapsed()
  
      profileInfo.append(
        ["Total time", "", totalTime, "100.0", totalTime / count])
      print tabulate(profileInfo, headers=["Region", "Count",
                                           "Elapsed", "Pct of total",
                                           "Secs/iteration"],
                     tablefmt="grid", floatfmt="6.3f")
      print
      print "Total time in L2 =", L2Time
      print "Total time in L4 =", L4Time
  
      if reset:
        self.resetProfile()
docs: Prints profiling information.
  
      Parameters:
      ----------------------------
      @param   reset (bool)
               If set to True, the profiling will be reset.