Python多进程停留在start方法

时间:2016-03-13 17:29:16

标签: python python-multiprocessing

这是一段代码:

    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") 

换句话说,我没有看到“新流程开始”(但子流程确实开始),也没有“抓住异常”,也没有“我只是一条线”。我想它可能是主要的进程退出某种方式,但我没有得到任何错误为什么主进程退出。有人有想法吗?

0 个答案:

没有答案