我有一个正在阻塞的订阅者,当我收到一个对象时,我屈服了。但即使在我达到产量之前,它也会产量。我可以用不同的方式解决这个问题吗?
def sub():
context = zmq.Context()
subscriber = context.socket(zmq.SUB)
subscriber.bind("ipc:///tmp/asd")
subscriber.subscribe(b'007')
while True:
[topic,msg] = subscriber.recv_multipart()
print("here") # does not print
p = pickle.loads(msg)
print(p)
yield (p.url)
def main():
print(sub()) # Expect to wait for sub to yield
if __name__ == "__main__":
main()
立即产生:<generator object sub at 0x7fdfcba10eb8>
我的期望是它在那里等着。有什么办法可以做到这一点?
[编辑]
好的print(next(sub()))
,因为 yield 按预期返回生成器对象,next
将得到结果。