On Tue, 16 Oct 2012 14:51:21 +0200 (CEST)
nick.coghlan
+ # 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
Adding an "url" attribute here looks a bit ugly to me. Why not use a dict comprehension for future_to_url? Regards Antoine. -- Software development and contracting: http://pro.pitrou.net