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,可调用对象。

代码示例

  1. import paddle.fluid as fluid
  2. import time
  3. def reader_creator_10(dur):
  4. def reader():
  5. for i in range(10):
  6. time.sleep(dur)
  7. yield i
  8. return reader
  9. def mapper(x):
  10. return (x + 1)
  11. orders = (True, False)
  12. thread_num = (1, 2, 4, 8, 16)
  13. buffer_size = (1, 2, 4, 8, 16)
  14. for order in orders:
  15. for t_num in thread_num:
  16. for size in buffer_size:
  17. user_reader = fluid.io.xmap_readers(mapper,
  18. reader_creator_10(0),
  19. t_num, size, order)
  20. for n in range(3):
  21. result = list()
  22. for i in user_reader():
  23. result.append(i)
  24. if not order:
  25. result.sort()
  26. for idx, e in enumerate(result):
  27. assert e == mapper(idx)