code: def run(runtest, test_functions, repeat=1):
      l = [
          (t, repr(t.__doc__.split("\n")[1].strip()))
          for t in test_functions
      ]
      start_memusage = memusage()
      diff_memusage = None
      start_jiffies = jiffies()
      i = 0
      while i < repeat:
          i += 1
          for t, fname in l:
              runtest(t)
              if start_memusage is None:
                  continue
              if diff_memusage is None:
                  diff_memusage = memusage() - start_memusage
              else:
                  diff_memusage2 = memusage() - start_memusage
                  if diff_memusage2 != diff_memusage:
                      print(
                          "memory usage change at step %i:" % i,
                          diff_memusage2 - diff_memusage,
                          fname,
                      )
                      diff_memusage = diff_memusage2
      current_memusage = memusage()
      print(
          "run",
          repeat * len(test_functions),
          "tests",
          "in %.2f seconds" % ((jiffies() - start_jiffies) / 100.0),
      )
      if start_memusage:
          print("initial virtual memory size:", start_memusage, "bytes")
          print(
              "current virtual memory size:", current_memusage, "bytes"
          )
  
imports: from __future__ import division, absolute_import, print_function
  import sys
  import re
  from numpy.testing import jiffies, memusage
label_desc: Use image node_id 2 for calling a global function with example usage: run(runtest, test_functions, repeat) without return types