title: Using multprocessing.Pipe for blocking until event occurs (with timeout)
body: <p>I am using <code>multprocessing.Pipe</code> in a rather simple script that has 2 processes where <strong><em>A</em></strong> reads data from an external source (Arduino connected on a serial port) and sends and event to <strong><em>B</em></strong>. This way I can make <strong><em>B</em></strong> block until it received that one specific event from <strong><em>A</em></strong>, however the external source is not able to detect the even very reliably at times (it's ~75% reliable). So I would like to implement a time-out around this event, however I would like to drop an erroneous even that had already been timed-out, but nothing stops it from occurring</p>
  
  <p>Is there a better abstraction that I can utilised for this purpose? One thing I'd like to be able to do is <code>b.recv(timeout=N)</code>, for some reason it's not currently possible with <code>multiprocess.Pipe</code>.</p>