improving performance of writing into a pipe
Serhiy Storchaka
storchaka at gmail.com
Mon Feb 18 14:29:09 EST 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