title: Python: How to use Value and Array in Multiprocessing pool
body: <p>For <code>multiprocessing</code> with <code>Process</code>, I can use <code>Value, Array</code> by setting <code>args</code> param.  </p>
  
  <p>With <code>multiprocessing</code> with <code>Pool</code>, how can I use <code>Value, Array.</code> There is nothing in the docs on how to do this. </p>
  
  <pre><code>from multiprocessing import Process, Value, Array
  
  def f(n, a):
      n.value = 3.1415927
      for i in range(len(a)):
          a[i] = -a[i]
  
  if __name__ == '__main__':
      num = Value('d', 0.0)
      arr = Array('i', range(10))
  
      p = Process(target=f, args=(num, arr))
      p.start()
      p.join()
  
      print(num.value)
      print(arr[:])
  </code></pre>
  
  <p>I am trying to use <code>Value, Array</code> within the code snippet below. </p>
  
  <pre><code>import multiprocessing
  
  
  def do_calc(data):
      #  access num or 
      #  work to update arr
      newdata =data * 2
      return newdata
  
  def start_process():
      print 'Starting', multiprocessing.current_process().name
  
  if __name__ == '__main__':
      num             = Value('d', 0.0)
      arr             = Array('i', range(10))  
      inputs          = list(range(10))
      print 'Input   :', inputs
  
      pool_size       = multiprocessing.cpu_count() * 2
      pool            = multiprocessing.Pool(processes=pool_size,initializer=start_process, )
      pool_outputs    = pool.map(do_calc, inputs)
      pool.close() # no more tasks
      pool.join()  # wrap up current tasks
  
      print 'Pool    :', pool_outputs
  </code></pre>