title: Create a "with" block on several context managers?
body: <p>Suppose you have three objects you acquire via context manager, for instance A lock, a db connection and an ip socket.
  You can acquire them by:</p>
  
  <pre><code>with lock:
     with db_con:
         with socket:
              #do stuff
  </code></pre>
  
  <p>But is there a way to do it in one block? something like</p>
  
  <pre><code>with lock,db_con,socket:
     #do stuff
  </code></pre>
  
  <p>Furthermore, is it possible, given an array of unknown length of objects that have context managers, is it possible to somehow do:</p>
  
  <pre><code>a=[lock1, lock2, lock3, db_con1, socket, db_con2]
  with a as res:
      #now all objects in array are acquired
  </code></pre>
  
  <p>If the answer is "no", is it because the need for such a feature implies bad design, or maybe I should suggest it in a pep? :-P</p>