improving performance of writing into a pipe

Serhiy Storchaka storchaka at gmail.com
Mon Feb 18 20:29:09 CET 2013


On 18.02.13 17:12, mikprog at gmail.com wrote:
> on an embedded linux system (BeagleBoard) I am writing data coming from bluetooth dongle into a pipe.
> The function is the following one:
>
>
> def write_to_pipe(line):
>
>      # next line ensures that bytes like '0x09' are not translated into '\t' for
>      #example, and they are sent as such
>      hexbytes = "\\x" + "\\x".join([hex(ord(c))[2:].zfill(2) for c in line])
>      wrap = ["echo -en '", "' > /tmp/mypipe"]
>      msg = hexbytes.join(wrap)
>      print "DBG: sending: ", msg
>
>      try:
>          os.popen( msg )
>      except:
>          print "Error: write_to_pipe has failed!"
>
>
> Now I typically receive 4 bytes from the bluetooth dongle and that is fine.
> However when I receive many more than that it seems that the writing into the pipe is too slow.
>
> Is there any clever/obvious way to improve the code above?
> (I am quite sure there is to be honest).

def write_to_pipe(line):
     hexbytes = ''.join('\\x%02x' % ord(c) for c in line)
     with open('/tmp/mypipe', 'w') as f:
         f.write(hexbytes)





More information about the Python-list mailing list