有时,列表中已启动的进程之一卡住了,并阻塞了整个程序

时间:2019-04-23 09:09:35

标签: python multiprocessing

我遇到卡住程序的问题。我的代码如下所示:

        for message in response.received_messages:
            process = multiprocessing.Process(
                target=self.process_task,
                args=(message.message, callback),
            )
            processes[process] = (message.ack_id, message.message.data)
            process.start()

        while processes:
            for process in list(processes):
                ack_id, msg_data = processes[process]
                if process.is_alive():
                    continue
                else:
                    self.subscriber_client.acknowledge(
                        subscription_path,
                        [ack_id],
                    )
                    processes.pop(process)

一切正常,我一次处理最多5条消息,但有时一个进程卡住并阻塞了我的整个程序,我不知道为什么。重新启动后,当我以相同的参数(例如卡住的进程)推送消息时,它可以毫无问题地完成任务。 我注意到,每次当进程停滞htop时,表明一个内核正在100%工作。有什么想法会导致这种情况吗?还是我应该进行自定义超时之类的操作来终止卡住的进程?

0 个答案:

没有答案