Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Python: Python

futures - a new package for asynchronous execution

 

 

Python python RSS feed   Index | Next | Previous | View Threaded


brian at sweetapp

Nov 5, 2009, 6:24 PM

Post #1 of 2 (189 views)
Permalink
futures - a new package for asynchronous execution

Hey all,

I recently implemented a package that I'd like to have include in the
Python 3.x standard library (and maybe Python 2.x) and I'd love to
have the feedback of this list.

The basic idea is to implement an asynchronous execution method
patterned heavily on java.util.concurrent (but less lame because
Python has functions as first-class objects). Here is a fairly
advanced example:

import futures
import functools
import urllib.request

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 urllib.request.urlopen(url, timeout=timeout).read()

# Use a thread pool with 5 threads to download the URLs. Using a pool
# of processes would involve changing the initialization to:
# with futures.ProcessPoolExecutor(max_processes=5) as executor
with futures.ThreadPoolExecutor(max_threads=5) as executor:
future_list = executor.run_to_futures(
[functools.partial(load_url, url, 30) for url in URLS])

# Check the results of each future.
for url, future in zip(URLS, future_list):
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())))

In this example, executor.run_to_futures() returns only when every url
has been retrieved but it is possible to return immediately, on the
first completion or on the first failure depending on the desired work
pattern.

The complete docs are here:
http://sweetapp.com/futures/

A draft PEP is here:
http://code.google.com/p/pythonfutures/source/browse/trunk/PEP.txt

And the code is here:
http://pypi.python.org/pypi/futures3/

All feedback appreciated!

Cheers,
Brian
--
http://mail.python.org/mailman/listinfo/python-list


aahz at pythoncraft

Nov 10, 2009, 3:23 PM

Post #2 of 2 (156 views)
Permalink
Re: futures - a new package for asynchronous execution [In reply to]

In article <mailman.2658.1257474254.2807.python-list [at] python>,
Brian Quinlan <brian [at] sweetapp> wrote:
>
>I recently implemented a package that I'd like to have include in the
>Python 3.x standard library (and maybe Python 2.x) and I'd love to
>have the feedback of this list.

Any recently implemented library has an extremely high bar before it gets
adopted into the standard library. You should concentrate on persuading
people to use your library; for example, you should make regular feature
and bugfix releases and announce them on c.l.py.announce.
--
Aahz (aahz [at] pythoncraft) <*> http://www.pythoncraft.com/

[on old computer technologies and programmers] "Fancy tail fins on a
brand new '59 Cadillac didn't mean throwing out a whole generation of
mechanics who started with model As." --Andrew Dalke
--
http://mail.python.org/mailman/listinfo/python-list

Python python RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.