python的promise/future模式

pip install futures

Executor

from concurrent import futures

Executor用来接收异步任务(包含参数),并返回一个Future


Executor

    submit(fn, *args, **kwargs)

    map(func, *iterables, timeout=None)

    shutdown(wait=True)

Executor还有两个子类ThreadPoolExecutor,ProcessPoolExecutor


Future Objects

    cancel()

    cancelled()

    running()

    done()

    result(timeout=None)

    exception(timeout=None)

    add_done_callback(fn)



from concurrent import futures
import urllib2

URLS = ['http://www.baidu.com/',
        'http://www.google.com/',
        'http://my.oschina.net/',
        'http://blog.sina.com.cn//']

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

def main():
    with futures.ThreadPoolExecutor(max_workers=5) as executor:
        future_to_urls = dict( (executor.submit(load_url, url, 10), url) for url in URLS )

        for future in futures.as_completed(future_to_urls):
            url = future_to_urls[future]
            try:
                print '%r page is %d bytes' % (url, len(future.result()))
            except Exception as e:
                print '%r generated an exception: %s' % (url, e)

if __name__ == '__main__':
    main()


转载于:https://my.oschina.net/1123581321/blog/358157

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值