2

Python multiprocessing を使用して次のコードを並列化するにはどうすればよいですか

def func(a,i):
   if (a>i):
      func(a-1,i)
      func(a-5,i)
   else :
      print a

編集:親プロセスが終了すると、すべての子サブプロセスも終了するというのは本当ですか?

編集2:

次のコードを実装しましたが、機能していません。エラーを見つけてください。

p=[]
def func(a,i):
 if a>i :
   proc=Process(target=func,args=(a-1,i,))
   p.append(proc)
   proc=Process(target=func,args=(a-5,i,))
   p.append(proc)

 else :
   print a

if _name_=='_main_':
   proc=Process(target=func,args=(100,25,))
   p.append(proc)
   for x in p:
     x.start()
     x.join()

サブプロセスがリストに追加されているにもかかわらず、上記のコードは (100,25) に対してのみ実行され、サブプロセスに対しては実行されません。

4

1 に答える 1

0

コードの最初に割り当てられた変数は、関数に値が残っていないため、関数で使用する前に、関数に global を追加する必要があります。コードを次のように変更します。

p=[]
def func(a,i):
    global p
    if a>i :
        proc=Process(target=func,args=(a-1,i,))
        p.append(proc)
        proc=Process(target=func,args=(a-5,i,))
        p.append(proc)


    else :
        print a

if _name_=='_main_':
   global p
   proc=Process(target=func,args=(100,25,))
   p.append(proc)
   for x in p:
     x.start()
     x.join()
于 2019-08-11T12:41:22.050 に答える