我有一个递归函数:
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()
似乎给出了一个错误。
还有一个轻微的并发症。我在代码中使用值(共享内存)和锁(信号量)。我已经彻底检查了代码,并且可以确认在持有任何资源时没有线程终止。
在这方面的任何帮助将不胜感激。