Python: How to use Value and Array in Multiprocessing pool
<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>