我有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()
目前没有回答
相关问题 更多 >
编程相关推荐