summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory P. Smith <greg@krypto.org>2013-12-08 10:58:28 -0800
committerGregory P. Smith <greg@krypto.org>2013-12-08 10:58:28 -0800
commit7b83b186794cec6e5d12f43f9c1a6f20bfa4e932 (patch)
tree646ac8ddc323f12a3c621d3afd4ace73e893e2cd
parentbd6932a576e643c8aad8c0b4a044655882ebb27d (diff)
parent589ecda56eb23937ba871734598cda8f11395389 (diff)
downloadcpython-git-7b83b186794cec6e5d12f43f9c1a6f20bfa4e932.tar.gz
Fixes issue #19929: Call os.read with 32768 within subprocess.Popen
communicate rather than 4096 for efficiency. A microbenchmark shows Linux and OS X both using ~50% less cpu time this way.
-rw-r--r--Lib/subprocess.py2
-rw-r--r--Misc/NEWS4
2 files changed, 5 insertions, 1 deletions
diff --git a/Lib/subprocess.py b/Lib/subprocess.py
index e7f39fef06..e79e5fd614 100644
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -1601,7 +1601,7 @@ class Popen(object):
selector.unregister(key.fileobj)
key.fileobj.close()
elif key.fileobj in (self.stdout, self.stderr):
- data = os.read(key.fd, 4096)
+ data = os.read(key.fd, 32768)
if not data:
selector.unregister(key.fileobj)
key.fileobj.close()
diff --git a/Misc/NEWS b/Misc/NEWS
index 633ef5040e..f81db69a3e 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -24,6 +24,10 @@ Library
- Issue #19343: Expose FreeBSD-specific APIs in resource module. Original
patch by Koobs.
+- Issue #19929: Call os.read with 32768 within subprocess.Popen.communicate
+ rather than 4096 for efficiency. A microbenchmark shows Linux and OS X
+ both using ~50% less cpu time this way.
+
- Issue #19506: Use a memoryview to avoid a data copy when piping data
to stdin within subprocess.Popen.communicate. 5-10% less cpu usage.