summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaphaƫl Marinier <raphael.marinier@gmail.com>2024-01-15 23:45:01 (GMT)
committerGitHub <noreply@github.com>2024-01-15 23:45:01 (GMT)
commit5094690efd7f663f2e0c1a2a633d3344a0557095 (patch)
treefb0e3437f68110ddc5d36c4480c77a528e86788d
parent4f24b92aa0677ed5310dd2d1572b55f4e30c88ef (diff)
downloadcpython-5094690efd7f663f2e0c1a2a633d3344a0557095.zip
cpython-5094690efd7f663f2e0c1a2a633d3344a0557095.tar.gz
cpython-5094690efd7f663f2e0c1a2a633d3344a0557095.tar.bz2
gh-91539: Small performance improvement of urrlib.request.getproxies_environment() (#108771)
Small performance improvement of getproxies_environment() when there are many environment variables. In a benchmark with 5k environment variables not related to proxies, and 5 specifying proxies, we get a 10% walltime improvement.
-rw-r--r--Lib/urllib/request.py2
-rw-r--r--Misc/NEWS.d/next/Library/2023-09-01-15-33-18.gh-issue-91539.xoNLEI.rst1
2 files changed, 2 insertions, 1 deletions
diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py
index 1d03259..bca5944 100644
--- a/Lib/urllib/request.py
+++ b/Lib/urllib/request.py
@@ -2490,7 +2490,7 @@ def getproxies_environment():
# select only environment variables which end in (after making lowercase) _proxy
proxies = {}
environment = []
- for name in os.environ.keys():
+ for name in os.environ:
# fast screen underscore position before more expensive case-folding
if len(name) > 5 and name[-6] == "_" and name[-5:].lower() == "proxy":
value = os.environ[name]
diff --git a/Misc/NEWS.d/next/Library/2023-09-01-15-33-18.gh-issue-91539.xoNLEI.rst b/Misc/NEWS.d/next/Library/2023-09-01-15-33-18.gh-issue-91539.xoNLEI.rst
new file mode 100644
index 0000000..a1af479
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-09-01-15-33-18.gh-issue-91539.xoNLEI.rst
@@ -0,0 +1 @@
+Small (10 - 20%) and trivial performance improvement of :func:`urrlib.request.getproxies_environment`, typically useful when there are many environment variables to go over.