0

我有一个正在阻塞的订阅者,当我收到一个对象时,我屈服了。但即使在我达到产量之前,它也会产量。我可以用不同的方式解决这个问题吗?

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将得到结果。

4

0 回答 0