A Java-style futures package for Python

This package is described in PEP-3148 and is included in Python 3.2.

See the Python documentation for a full description.

Python 2.6+ Releases

Python 3.0 and 3.1 Releases

Example (Python 2.6)

import futures
import urllib2

URLS = ['http://www.foxnews.com/',
        'http://www.cnn.com/',
        'http://europe.wsj.com/',
        'http://www.bbc.co.uk/',
        'http://some-made-up-domain.com/']

def load_url(url, timeout):
    return urllib2.urlopen(url, timeout=timeout).read()

with 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 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())
        else:
            print '%r page is %d bytes' % (url, len(future.result()))