]> granicus.if.org Git - python/commitdiff
Don't grow strings by concatenation. Use ''.join() instead.
authorRaymond Hettinger <python@rcn.com>
Sun, 18 May 2014 20:02:25 +0000 (21:02 +0100)
committerRaymond Hettinger <python@rcn.com>
Sun, 18 May 2014 20:02:25 +0000 (21:02 +0100)
Doc/howto/sockets.rst

index 7a9b0edc1944862d71035ee0c2eb2fba31b0a6e0..820beb5cff2d1a9a6f5c63767813bdd0990dad54 100644 (file)
@@ -204,13 +204,15 @@ length message::
                totalsent = totalsent + sent
 
        def myreceive(self):
-           msg = b''
-           while len(msg) < MSGLEN:
-               chunk = self.sock.recv(MSGLEN-len(msg))
+           chunks = []
+           bytes_recd = 0
+           while bytes_recd < MSGLEN:
+               chunk = self.sock.recv(min(MSGLEN - bytes_recd, 2048))
                if chunk == b'':
                    raise RuntimeError("socket connection broken")
-               msg = msg + chunk
-           return msg
+               chucks.append(chunk)
+               bytes_recd = bytes_recd + len(chunk)
+           return b''.join(chunks)
 
 The sending code here is usable for almost any messaging scheme - in Python you
 send strings, and you can use ``len()`` to determine its length (even if it has