python 管道 非阻塞_Python上的非阻塞生成器

我正在使用QT应用程序中的请求模块中的生成器功能,与请求流示例中的几乎相同:

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将阻止consumpt_stream方法.

在任何情况下,生成器都不会立即让步,而是必须等待传入的消息等,从而阻塞了使用者,这可能会发生.

Python中是否有任何模式可以让您以非阻塞方式使用生成器,即,如果生成器屈服,则处理其结果,否则进行其他操作直到出现下一个结果?

解决方法:

生产者通常在线程或其他进程中运行(队列支持其中一种),只是将消息放入队列中.消费者只要有感觉,就会从队列中弹出消息.此操作支持超时参数.

标签:generator,yield,python

来源: https://codeday.me/bug/20191030/1966424.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值