title: Non-blocking generator on Python
body: <p>I'm using a generator function from the requests module in a QT-Application, pretty much the same as in the requests-streaming example:</p>
  
  <pre><code>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
  </code></pre>
  
  <p>However, when there is no incoming response (f.e. irregularly incoming tweets from Twitters Streaming API), the generator <code>get_stream</code> will block the <code>consume_stream</code> method. </p>
  
  <p>This might occur in any situation where a generator does not yield immediately, but hast to wait for incoming messages etc., and therefore blocks the consumer. </p>
  
  <p>Is there any pattern in Python where you can consume a generator in a non-blocking way, i.e. if the generator yields, process it's results, otherwise do something else until the next results are occuring? </p>