title: input() blocks other python processes in Windows 8 (python 3.3)
body: <p>Working on a multi-threaded cross-platform python3.3 application I came across some weird behavior I was not expecting and am not sure is expected. The issue is on Windows 8 calling the <code>input()</code> method in one thread blocks other threads until it completes. I have tested the below example script on three Linux, two Windows 7 and one Windows 8 computers and this behavior is only observed on the Windows 8 computer. Is this expected behavior for Windows 8?</p>
  
  <p>test.py:</p>
  
  <pre><code>import subprocess, threading, time
  
  def ui():
      i = input("--&gt;")
      print(i)
  
  def loop():
      i = 0
      f = 'sky.{}'.format(i)
      p = subprocess.Popen(['python', 'copy.py', 'sky1', f])
      t = time.time()
      while time.time() &lt; t+15:
          if p.poll() != None:
              print(i)
              time.sleep(3)
              i+=1
              f = 'sky.{}'.format(i)
              p = subprocess.Popen(['python', 'copy.py', 'sky1', f])
      p.terminate()
      p.wait()
  
  def start():
      t1 = threading.Thread(target=ui)
      t2 = threading.Thread(target=loop)
      t1.start()
      t2.start()
      return t2
  
  t2 = start()
  t2.join()
  print('done')
  </code></pre>
  
  <p>copy.py:</p>
  
  <pre><code>import shutil
  import sys
  
  src = sys.argv[1]
  dst = sys.argv[2]
  
  print('Copying \'{0}\' to \'{1}\''.format(src, dst))
  shutil.copy(src, dst)
  </code></pre>
  
  <p>Update:
  While trying out one of the suggestions I realized that I rushed to a conclusion missing something obvious. I apologize for getting off to a false start.</p>
  
  <p>As Schollii suggested just using threads (no subprocess or python files) results in all threads making forward progress so the problem actually is using <code>input()</code> in one python process will cause other python processes to block/not run (I do not know exactly what is going on). Furthermore, it appears to be just python processes that are affected. If I use the same code shown above (with some modifications) to execute non-python executables with subprocess.Popen they will run as expected.</p>
  
  <p>To summarize:</p>
  
  <ul>
  <li>Using subprocess to execute non-python executable: works as expected with and without any calls to <code>input()</code>.</li>
  <li>Using subprocess to execute python executable: created processes appear to not run if a a call to <code>input()</code> is made in the original process. </li>
  <li>Use subprocess to create python processes with a call to <code>input()</code> in a new process and not the original process: A call to <code>input()</code> blocks all python processes spawned by the 'main' process.</li>
  </ul>
  
  <p>Side Note: I do not have Windows 8 platform so debugging/tests can be a little slow.</p>