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)