【发布时间】:2020-03-09 08:14:46
【问题描述】:
我从事机器学习输入管道的工作。我编写了一个数据加载器,它从一个大的 .hdf 文件中读取数据并返回切片,每个切片大约需要 2 秒。因此,我想使用一个队列,它从多个数据加载器中接收对象,并可以通过下一个函数(如生成器)从队列中返回单个对象。此外,填充队列的进程应该以某种方式在后台运行,当队列未满时重新填充队列。我没有让它正常工作。它与单个数据加载器一起工作,给了我 4 倍相同的切片..
import multiprocessing as mp
class Queue_Generator():
def __init__(self, data_loader_list):
self.pool = mp.Pool(4)
self.data_loader_list = data_loader_list
self.queue = mp.Queue(maxsize=16)
self.pool.map(self.fill_queue, self.data_loader_list)
def fill_queue(self,gen):
self.queue.put(next(gen))
def __next__(self):
yield self.queue.get()
我从中得到的: NotImplementedError:池对象不能在进程之间传递或腌制 提前致谢
【问题讨论】:
标签: python multiprocessing generator