私は再帰関数を持っています:
def generateCategory(url,level,id,lock)
#url(string) , level (int), id (Value:shared memory), Lock (Semaphore)
if level == 5:
return #The child process should terminate here right?
#code here
for i in range(5):
Process(target=fn, args =('abc',level+1,id,lock)).start()
return #Here, according to my understanding, the parent process should terminate leaving the child process as an orphan (since I didn't use join)
私が間違っていなければ、いくつかのプロセスは終了していません。forループの後の戻りが期待どおりに機能しないため、同じことが起こっているのではないかと思います。代わりに、すべての子プロセスが完了するまで待機します。私はterminate()コマンドを調べました。しかし、それが私のために機能するためには、私はそれ自体の中でプロセスを終了しなければなりません。
self.terminate()
エラーが発生するようです。
もう1つのわずかな問題があります。コードで値(共有メモリ)とロック(セマフォ)を使用しています。コードを徹底的にチェックし、リソースを保持しているときにスレッドが終了しないことを確認できます。
この点での助けをいただければ幸いです。