title: Sending and receiving async over multiprocessing.Pipe() in Python
body: <p>I'm having some issues getting the Pipe.send to work in this code. What I would ultimately like to do is send and receive messages to and from the foreign process while its running in a fork. This is eventually going to be integrated into a pexpect loop for talking to interpreter processes. </p>
  
  <pre><code>from multiprocessing import Process, Pipe
  from pexpect import spawn
  
  
  class CockProc(Process):
  
      def start(self):
          self.process = spawn('coqtop', ['-emacs-U'])
  
      def run(self, conn):
          while True:
              if not conn.poll():
                  cmd = conn.recv()
                  self.process.send(cmd)
              self.process.expect('\&lt;\/prompt\&gt;')
              result = self.process.before + self.process.after + " "
              conn.send(result)
  
  
  q, p = Pipe()
  
  proc = CockProc()
  proc.start()
  proc.run(p)
  res = q.recv()
  command = raw_input(res + " ")
  
  q.send(command)
  res = q.recv()
  parent_conn.send('OHHAI')
  p.join()
      `
  </code></pre>