我在使用Python Stompest库生成到达时的帧时遇到了问题。当我在函数中包含yield
关键字时,代码不会像应该的那样阻塞和等待帧。你知道吗
def receive(stomp):
received_messages = 0
while True:
frame = stomp.receiveFrame()
stomp.ack(frame)
yield frame.body
但是,如果我所做的只是打印框架主体,那么它会像应该的那样等待
def receive(stomp):
while True:
frame = stomp.receiveFrame()
stomp.ack(frame)
print frame.body
在这种情况下使用yield
有什么问题吗?你知道吗
当你把
yield
放在一个函数中时,它就变成了一个返回生成器的函数,只有在某种迭代或理解中需要生成器时,才会对生成器进行延迟计算。在你给的第一个案子里要使生成器
x
实际执行某些操作,可以执行以下操作:当您在生成器上迭代时,它将实际执行您定义的函数中的语句(包括阻塞,直到帧到达),并为每次迭代返回帧。使用
yield
创建一个生成器对象可以省去实现状态以手动记住所进行的迭代的麻烦。你知道吗相关问题 更多 >
编程相关推荐