xmap_readers
paddle.fluid.io.xmap_readers
(mapper, reader, process_num, buffer_size, order=False)[源代码]
多线程下,使用自定义映射器 reader 返回样本到输出队列。
参数
- mapper (callable): 映射 reader 数据的函数。
- reader (callable): 产生数据的 reader。
- process_num (int): 处理样本的线程数。
- buffer_size (int): 数据缓冲队列大小。
- order (bool): 是否保持原始 reader 数据顺序,默认为 False。
返回
一个用户定义的 reader 装饰器 。
返回类型
callable,可调用对象。
代码示例
import paddle.fluid as fluid
import time
def reader_creator_10(dur):
def reader():
for i in range(10):
time.sleep(dur)
yield i
return reader
def mapper(x):
return (x + 1)
orders = (True, False)
thread_num = (1, 2, 4, 8, 16)
buffer_size = (1, 2, 4, 8, 16)
for order in orders:
for t_num in thread_num:
for size in buffer_size:
user_reader = fluid.io.xmap_readers(mapper,
reader_creator_10(0),
t_num, size, order)
for n in range(3):
result = list()
for i in user_reader():
result.append(i)
if not order:
result.sort()
for idx, e in enumerate(result):
assert e == mapper(idx)