这是一段代码:
while (int(currentMemoryUsage[2]) < 50 and int(current_cpu_usage)<80):
self.event_list.append(Event())
p = Process(target=self.classA.functionB,
args=(a, b, self.lock, self.event_list[counter]))
print('create process')
self.process_list.append(p)
self.event_list[counter].clear()
counter += 1
print("about to start process")
p.start()
print("new process started")
启动一些进程后,它会停留在p.start(),它会成功创建新进程,但是停留在p.start(),是否有人知道为什么会发生这种情况?
编辑1:
起初我以为它停留在p.start()
,因为新的进程没有打印出来,我看到系统中有一些僵尸进程。
但是我在signal.alarm(180)
之前添加p.start()
以强制它跳过被阻止的行后,我仍然没有看到执行后的行。编辑后的代码如下所示。
while True:
if (int(current_memory_usage[2]) < 50 and int(current_cpu_usage)<80):
try:
self.event_list.append(Event())
p = Process(target=self.classA.functionB,
args=(a, b, self.lock, self.event_list[counter]))
print('create process')
self.process_list.append(p)
self.event_list[counter].clear()
counter += 1
print("about to start process")
signal.alarm(180)
p.start()
print("new process started")
signal.alarm(0)
except Exception as e:
print("catch an exception" + str(e))
print(" I am just a line in the while")
换句话说,我没有看到“新流程开始”(但子流程确实开始),也没有“抓住异常”,也没有“我只是一条线”。我想它可能是主要的进程退出某种方式,但我没有得到任何错误为什么主进程退出。有人有想法吗?