python thread学习

最近对python比较感兴趣,想对现有的项目移植到python上玩玩。
对于多线程,看个例子:

import time
import urllib2
def get_responses():
    urls = ['http://www.amazon.com', 'http://www.ebay.com', 'http://www.alibaba.com', 'http://www.reddit.com']
    start = time.time()
    for url in urls:
        print url
        resp = urllib2.urlopen(url)
        print resp.getcode()
    print "Elapsed time: %s" % (time.time()-start)

get_responses()

输出:
http://www.amazon.com
200
http://www.ebay.com
200
http://www.alibaba.com
200
http://www.reddit.com
200
Elapsed time: 5.67659378052
[Finished in 5.9s]
多线程的版本:

import time
import urllib2
from threading import Thread

class GetUrlThread(Thread):
    def __init__(self, url):
        self.url = url 
        super(GetUrlThread, self).__init__()

    def run(self):
        resp = urllib2.urlopen(self.url)
        print self.url, resp.getcode()

def get_responses():
    urls = ['http://www.amazon.com', 'http://www.ebay.com', 'http://www.alibaba.com', 'http://www.reddit.com']
    start = time.time()
    threads = []
    for url in urls:
        t = GetUrlThread(url)
        threads.append(t)
        t.start()
    for t in threads:
        t.join()
    print "Elapsed time: %s" % (time.time()-start)

get_responses()

开销:
http://www.alibaba.com 200
http://www.ebay.com 200
http://www.reddit.com 200
http://www.amazon.com 200
Elapsed time: 3.85897302628
[Finished in 4.2s]
果然减少了时间,四个线程同时跑,还是节省了时间。
代码完全参考 http://agiliq.com/blog/2013/09/understanding-threads-in-python/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值