>> def read_and_unpack(stream, format): >> data = stream.read(struct.calcsize(format)) >> return struct.unpack(format, data) >> >>> Otherwise, I'm +1 on your suggestion, avoiding copying is a good >>> thing. >> >> I believe my function also doesn't involve any unnecessary copies. > You just moved your copying down one level into stream.read(). This > magic function must be implemented by possibly concatenating > several "socket.recv()" calls. > This invariably involves data copying, either by "".join() or > stringio.write() Assuming there are multiple recv calls. For a typical struct, all data will come out of the stream with a single recv. so no join will be necessary. Regards, Martin
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4