title: Minimum delay to communicate through serial using Python
body: <p>I have a simple Python script to communicate with a micro-controller (STM32F103C8T6) using the serial port. I'm using pySerial to write a couple of 44-bytes messages at a time.</p>
  
  <pre><code>[...]
  serial = serial.Serial(serial.tools.list_ports.comports()[0].device, 115200)
  
  packet0 = bytearray(INSERT_RELEVANT_44-BYTES)
  packet1 = bytearray(INSERT_RELEVANT_44-BYTES)
  serial.write(packet0)
  
  time.sleep(0.1)  # Delay between communications
  
  serial.write(packet1)
  [...]
  </code></pre>
  
  <p>I had to insert a delay between the communications, otherwise it wouldn't work. My reasoning is that for a baud rate of 115200 bps the messages should take 44*8/115200 = ~0,003 seconds to be sent, thus this should be the minimum ideal interval between sending the packets. The code, however, doesn't work for anything smaller than 0,1.</p>
  
  <p>Why? Am I missing something? I suppose there is some delay due to the operating system and the USB, but it shouldn't account for ~0,7 seconds. How can I optimize this to use the minimum possible delay?</p>