国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python實(shí)現(xiàn)多線程下載文件的代碼實(shí)例

2020-02-23 05:25:47
字體:
供稿:網(wǎng)友

實(shí)現(xiàn)簡(jiǎn)單的多線程下載,需要關(guān)注如下幾點(diǎn):
1.文件的大小:可以從reponse header中提取,如“Content-Length:911”表示大小是911字節(jié)
2.任務(wù)拆分:指定各個(gè)線程下載的文件的哪一塊,可以通過request header中添加“Range: bytes=300-400”(表示下載300~400byte的內(nèi)容),注意可以請(qǐng)求的文件的range是[0, size-1]字節(jié)的。
3.下載文件的聚合:各個(gè)線程將自己下載的文件塊保存為臨時(shí)文件,所有線程都完成后,再將這些臨時(shí)文件按順序聚合寫入到最終的一個(gè)文件中。

實(shí)現(xiàn)代碼:
代碼如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
# filename: paxel.py
# FROM: http://jb51.net/code/view/58/full/
# Jay modified it a little and save for further potential usage.

'''It is a multi-thread downloading tool

    It was developed following axel.
        Author: volans
        E-mail: volansw [at] gmail.com
'''

import sys
import os
import time
import urllib
from threading import Thread

# in case you want to use http_proxy
local_proxies = {'http': 'http://131.139.58.200:8080'}

 
class AxelPython(Thread, urllib.FancyURLopener):
    '''Multi-thread downloading class.

        run() is a vitural method of Thread.
    '''
    def __init__(self, threadname, url, filename, ranges=0, proxies={}):
        Thread.__init__(self, name=threadname)
        urllib.FancyURLopener.__init__(self, proxies)
        self.name = threadname
        self.url = url
        self.filename = filename
        self.ranges = ranges
        self.downloaded = 0

    def run(self):
        '''vertual function in Thread'''
        try:
            self.downloaded = os.path.getsize(self.filename)
        except OSError:
            #print 'never downloaded'
            self.downloaded = 0

        # rebuild start poind
        self.startpoint = self.ranges[0] + self.downloaded

        # This part is completed
        if self.startpoint >= self.ranges[1]:
            print 'Part %s has been downloaded over.' % self.filename

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 梁平县| 渭源县| 札达县| 汝州市| 大埔县| 乌鲁木齐市| 溧水县| 五原县| 奈曼旗| 方山县| 武冈市| 天津市| 开阳县| 西乡县| 长海县| 佛冈县| 离岛区| 无极县| 云南省| 大英县| 宜宾县| 永和县| 运城市| 剑河县| 江都市| 岳阳市| 肥东县| 枣阳市| 台东市| 奉贤区| 香港 | 通许县| 咸阳市| 鹿邑县| 天峻县| 富宁县| 义马市| 随州市| 汾西县| 吴旗县| 任丘市|