summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTrent Nelson <trent@trent.me>2012-10-16 12:56:46 (GMT)
committerTrent Nelson <trent@trent.me>2012-10-16 12:56:46 (GMT)
commit15a9bae20a0508a14ef684ddd74be285471fe7d2 (patch)
tree94bc62a5854d78d33d338e7c5d79f7d6afb6e5d9
parentcd02b3f781b0a0d545bffb47741a2f5bb37c9a41 (diff)
parentc7c03ba5bebfc9915d01a2a774b625f79adf2297 (diff)
downloadcpython-15a9bae20a0508a14ef684ddd74be285471fe7d2.zip
cpython-15a9bae20a0508a14ef684ddd74be285471fe7d2.tar.gz
cpython-15a9bae20a0508a14ef684ddd74be285471fe7d2.tar.bz2
Merge heads.
-rw-r--r--Doc/library/concurrent.futures.rst25
-rw-r--r--Misc/NEWS3
2 files changed, 18 insertions, 10 deletions
diff --git a/Doc/library/concurrent.futures.rst b/Doc/library/concurrent.futures.rst
index 8908542..70b0fd1 100644
--- a/Doc/library/concurrent.futures.rst
+++ b/Doc/library/concurrent.futures.rst
@@ -136,20 +136,25 @@ ThreadPoolExecutor Example
'http://www.bbc.co.uk/',
'http://some-made-up-domain.com/']
+ # Retrieve a single page and report the url and contents
def load_url(url, timeout):
- return urllib.request.urlopen(url, timeout=timeout).read()
+ conn = urllib.request.urlopen(url, timeout=timeout)
+ return conn.readall()
+ # We can use a with statement to ensure threads are cleaned up promptly
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
- future_to_url = dict((executor.submit(load_url, url, 60), url)
- for url in URLS)
-
- for future in concurrent.futures.as_completed(future_to_url):
- url = future_to_url[future]
- if future.exception() is not None:
- print('%r generated an exception: %s' % (url,
- future.exception()))
+ # Start the load operations and mark each future with its URL
+ load_urls = [executor.submit(load_url, url, 60) for url in URLS]
+ for future, url in zip(load_urls, URLS):
+ future.url = url
+ for future in concurrent.futures.as_completed(load_urls):
+ url = future.url
+ try:
+ data = future.result()
+ except Exception as exc:
+ print('%r generated an exception: %s' % (url, exc))
else:
- print('%r page is %d bytes' % (url, len(future.result())))
+ print('%r page is %d bytes' % (url, len(data)))
ProcessPoolExecutor
diff --git a/Misc/NEWS b/Misc/NEWS
index 5d17aec..26addf8 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -176,6 +176,9 @@ Build
Documentation
-------------
+- Additional comments and some style changes in the concurrent.futures URL
+ retrieval example
+
- Issue #16115: Improve subprocess.Popen() documentation around args, shell,
and executable arguments.