python multiprocessing: processes don't work -


i want assign computing jobs more 1 cpu, choose multiprocessing. however, result not want.

import numpy np multiprocessing import process  def func(begin,end):     print('*'*5)     print('begin=%d' %(begin))     in range(begin,end):         j in range(10):             myarray[i][j]=1  myarray=np.zeros((12,10)) print(myarray) in range(4):     begin=i*3     end=(i+1)*3     p=process(target=func,args=(begin,end,))     p.start()  print('*'*5) print(myarray) 

i think myarray should ones. doesn't change @ all. why? func function not change elements of myarray? tried example linkenter link description here

from multiprocessing import process def f(name):     print('hello',name)  p=process(target=f,args=('bob',)) p.start() 

it shows nothing on screen. why? how should finish computation python? can give way of take advantage of multi-cpus?

there 2 problems there:

  1. when print array @ end, how know processes have finished? need invoke join() on each process ensure have finished.

  2. each process has copy of "myarray". if want communicate several processes need either use queue or pipe. check the documentation talks exchanging data between processes

here working example using base 1 posted (it not intended fast, show how communication done):

from multiprocessing import process, freeze_support, queue  def func(my_id, q, begin, end):     global myarray     print('process %d has range: %d - %d' % (my_id, begin, end))     in range(begin,end):         q.put((i, * 2))  if __name__ == "__main__":     freeze_support()      q = queue()     processes = []     myarray=[0] * 12     print("at beginning array ", myarray)      in range(4):         begin = i*3         end = (i+1)*3         p = process(target=func, args=(i, q, begin, end))         p.start()         processes.append(p)      p in processes:         p.join()      while not q.empty():         (index, value) = q.get()         myarray[index] = value      print("at end array ", myarray) 

try change line p.join() pass see happens :)


Comments

Popular posts from this blog

c# - Binding a comma separated list to a List<int> in asp.net web api -

Delphi 7 and decode UTF-8 base64 -

html - Is there any way to exclude a single element from the style? (Bootstrap) -