For multiprocessing
with Process
, I can use Value, Array
by setting args
param.
With multiprocessing
with Pool
, how can I use Value, Array.
There is nothing in the docs on how to do this.
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[:])
I am trying to use Value, Array
within the code snippet below.
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