马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
观智能别的文章推荐:快来尝鲜!阿里开源3D人体重建模型,单张图片指定动作天生视频
天生器
1 天生器函数**(Generator function)**
- 详解:
天生器可以利用函数来创建,天生器函数利用yield关键字来产生值,而不是利用return。天生器可以被iter()、next()和for循环调用。在迭代时,天生器函数会从上一次的yield语句处恢复执行(Python保存了上下文),直到碰到下一个yield语句或函数结束。****
所以说天生器是一种特殊的迭代器,更高级的迭代器,__iter__和__next__魔法函数由Python主动实现,不需要我们显式界说。
- 案例
做视频推理时利用天生器,即一次返回一帧的推理效果,而不是将所有帧的效果放在列表中一次性返回;
做大语言模型推理时利用天生器,流式输出,而不是等待所有token天生后一次性返回。
- 语法: 利用 yield 关键字界说天生器函数。
- 优点: 可以看出,天生器的一个重要特性是懒惰计算,即它只在需要时才天生值。这意味着天生器不会一次性计算所有值并存储在内存中,从而节省了大量内存。
- 示例:
- def fibonacci_generator():
- a, b = 0, 1
- while True:
- yield a
- a, b = b, a + b
- def square_generator(iterable):
- for value in iterable:
- yield value * value
- #既然说在迭代中每次执行到下一个yield语句,那么可以定义一个最简单形式的生成器
- def simple_generator():
- yield 100
- yield 200
- yield 300
- if __name__ == '__main__':
- fib = fibonacci_generator()
- for _ in range(10):
- print(next(fib),end=" ") # 输出: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34
- print() # 换行
- for i in square_generator([1,2,3,4,5]):
- print(i,end=" ") #输出1 4 9 16 25
- print()#换行
- for i in simple_generator():
- print(i, end=" ") # 输出100 200 300
复制代码 2 天生器表达式与列表推导式
天生器表达式是构建天生器的另一种方式,类似于列表推导式,但利用圆括号 () 而不是方括号 []。
示例:
- #通过生成器表达式构建生成器
- gen = (x * x for x in range(5))
- #普通的列表推导式
- l = [x*x for x in range(5)]
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
|