paddle.fluid.io.xmap_readers

最近遇到多次paddle.fluid.io.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)

下面说一下自己的理解:首先返回的是一个reader 装饰器,先不管什么是装饰器,我们只需知道如何使用这个函数。首先如果直接打印这个函数的输出,你将会得到一个下面的结果:
在这里插入图片描述
要获得该函数的结果,可以直接把这个函数当做类似于列表的存在用for 循环来处理。这只是我的理解,有不对的地方请指正。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值