[Python-checkins] cpython (3.4): Don't grow strings by concatenation. Use ''.join() instead.

raymond.hettinger python-checkins at python.org
Sun May 18 22:32:57 CEST 2014


http://hg.python.org/cpython/rev/854fd6eeee2f
changeset: 90755:854fd6eeee2f
branch: 3.4
parent: 90753:31211947387b
user: Raymond Hettinger <python at rcn.com>
date: Sun May 18 21:02:25 2014 +0100
summary:
 Don't grow strings by concatenation. Use ''.join() instead.
files:
 Doc/howto/sockets.rst | 12 +++++++-----
 1 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/Doc/howto/sockets.rst b/Doc/howto/sockets.rst
--- a/Doc/howto/sockets.rst
+++ b/Doc/howto/sockets.rst
@@ -204,13 +204,15 @@
 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
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /