title: Python multiprocess profiling
body: <p>I'm struggling to figure out how to profile a simple multiprocess python script</p>
  <pre><code>import multiprocessing
  import cProfile
  import time
  def worker(num):
      time.sleep(3)
      print 'Worker:', num
  
  if __name__ == '__main__':
      for i in range(5):
          p = multiprocessing.Process(target=worker, args=(i,))
          cProfile.run('p.start()', 'prof%d.prof' %i)
  </code></pre>
  <p>I'm starting 5 processes and therefore cProfile generates 5 different files. Inside of each I want to see that my method 'worker' takes approximately 3 seconds to run but instead I'm seeing only what's going on inside the 'start'method.</p>
  <p>I would greatly appreciate if somebody could explain this to me.</p>
  <h3>Update: Working example based on accepted answer:</h3>
  <pre><code>import multiprocessing
  import cProfile
  import time
  def test(num):
      time.sleep(3)
      print 'Worker:', num
  
  def worker(num):
      cProfile.runctx('test(num)', globals(), locals(), 'prof%d.prof' %num)
  
  
  if __name__ == '__main__':
      for i in range(5):
          p = multiprocessing.Process(target=worker, args=(i,))
          p.start()
  </code></pre>