title: When should I use `wait` instead of `communicate` in subprocess?
body: <p>In the document of wait (http://docs.python.org/2/library/subprocess.html#subprocess.Popen.wait), it says:</p>
  
  <blockquote>
    <p>Warning</p>
    
    <p>This will deadlock when using stdout=PIPE and/or stderr=PIPE and the
    child process generates enough output to a pipe such that it blocks
    waiting for the OS pipe buffer to accept more data. Use communicate()
    to avoid that.</p>
  </blockquote>
  
  <p>From this, I think <code>communicate</code> could replace <strong>all usage</strong> of <code>wait()</code> if <code>retcode</code> is not need. And even when the <code>stdout</code> or <code>stdin</code> are not PIPE, I can also replace <code>wait()</code> by <code>communicate()</code>.</p>
  
  <p>Is that right? Thanks!</p>