title: Waiting for data by serial port during certain time in Python
body: <p>I have to wait a certain size data by serial port during certain time. If I get less data for this time, then I would like to avoid read data. If I get enough data early, then I would like to read them and stop waiting data too.</p>
  
  <p>My current solution looks like this:</p>
  
  <pre><code>serial.open()
  start_time = time()
  while serial.in_waiting &lt; expected_data_size: # waiting certain size of data
      if time_to_wait &lt; time() - start_time: # time is expired
          serial.close()
          return
  data = serial.read(expected_data_size)
  serial.close()
  </code></pre>
  
  <p>But I think it's not good solution, because comparisons (in "while" and "if" blocks) occur a lot of times, while it waits for a data.</p>
  
  <p>Please, advise me, how to implement it better in Python 3. To work with serial port I use <a href="https://pypi.python.org/pypi/pyserial" rel="nofollow noreferrer">pySerial</a>.</p>
  
  <p>Thank you in advance!</p>