class_docstr: Profile python/cython files or functions
  
  If you are profiling cython code you need to add
  # cython: profile=True on the top of your .pyx file
  
  and for the functions that you do not want to profile you can use
  this decorator in your cython files
  
  @cython.profile(False)
  
  Parameters
  ----------
  caller : file or function call
  args : function arguments
  
  Attributes
  ----------
  stats : function, stats.print_stats(10) will prin the 10 slower functions
  
  Examples
  --------
  from dipy.core.profile import Profiler
  import numpy as np
  p=Profiler(np.sum,np.random.rand(1000000,3))
  fname='test.py'
  p=Profiler(fname)
  p.print_stats(10)
  p.print_stats('det')
  
  References
  ----------
  https://docs.cython.org/src/tutorial/profiling_tutorial.html
  https://docs.python.org/library/profile.html
  https://github.com/rkern/line_profiler
code: def _profile_function(self):
      self.call(*self.args)
  
imports: import os
  import subprocess
  from dipy.utils.optpkg import optional_package
label_desc: Use image node_id 2 for calling the Profiler obj's underlying member method code with example usage: obj._profile_function() without return types