我在 QT 应用程序中使用 requests 模块中的生成器函数,与请求流示例中的几乎相同:
import json
import requests
def get_stream():
r = requests.get('http://httpbin.org/stream/20', stream=True)
for line in r.iter_lines():
if line:
yield json.loads(line)
def consume_stream():
for message in get_stream():
#do something
但是,当没有传入响应时(从 Twitters Streaming API 不规则地传入推文),生成器get_stream
将阻塞该consume_stream
方法。
这可能发生在生成器没有立即产生,但必须等待传入消息等的任何情况下,因此会阻塞消费者。
Python中是否有任何模式可以以非阻塞方式使用生成器,即如果生成器产生,则处理它的结果,否则在下一个结果出现之前做其他事情?