多进程的Python断言异常

2024-03-29 08:18:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有Python代码,在一个进程的各个步骤中多次使用多处理。它似乎在工作,但我经常看到以下信息:

Exception AssertionError: AssertionError('can only test a child process',) in <Finalize object, dead> ignored

我不太清楚这意味着什么,也不知道我是怎么做的。 否则脚本将成功完成,并且似乎已正确完成。你知道吗

我一直遵循这个模式来使用多重处理。 有什么东西不见了吗,比如我应该做的清理工作?你知道吗

如果这些信息可以被忽略,我能以某种方式抑制它们吗?你知道吗

import multiprocessing as mp

class MultiProcess:
    queue = None

    def __init__(self, nb_workers):
        self.queue = mp.JoinableQueue()
        self.processes = [mp.Process(target=self.doprocessing, args=[]) for i in range(nb_workers)]
        for p in self.processes:
            p.start()

    def addToQueue(self, item):
        self.queue.put(item)

    def doprocessing(self):
        while True:
            item = self.queue.get()
            if item is None:
                break
            # Do some work with item
            self.queue.task_done()

    def terminate(self):
        self.queue.join()
        for p in self.processes:
            p.terminate()

r = MultiProcess(config.NUM_PROCESSORS)
for f in mylist.keys():
    r.addToQueue({"id": f})
r.terminate()

Tags: inselfnone信息forqueuedefmp