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