python多线程下载多个文件_python多线程下载文件 练习1
***今天在我BF的帮助下完成了小小的程序,也是我第一次写博客呢,谢谢他哦嘎嘎
1.首先,计算出下载文件的长度。
conn = urllib.urlopen(url)
headers = conn.info()
File_len = int (headers['Content-Length'])
2.根据所得到的文件长度对于每个线程确定下载数据的长度和开始下载位置。
req = urllib2.Request('http://guidetodatamining.com/guide/ch2/BX-Dump.zip')
req.headers['Range'] = 'bytes=%s-%s' % (start, end)
3在本地建一个文件保存所下载数据,对于每个线程所下载起始位置跟下载起始位置相同。每个线程互斥访问文件。
4.检查所下载文件对错。
Python中的filecmp模块来比较两个文件。
import filecmp
filecmp.cmp(r'C:\Users\tana\Desktop\BX-Dump.zip',r'C:\Users\tana\Desktop\multithreads.zip')
具体代码:
import urllib
import urllib2
import threading,time
#线程函数
def threadcode(start,end):
req = urllib2.Request('http://guidetodatamining.com/guide/ch2/BX-Dump.zip')
req.headers['Range'] = 'bytes=%s-%s' % (start, end)
response = urllib2.urlopen(req)
#互斥临界区
l.acquire()
f.seek(start,0)
f.write(response.read())
l.release()
# Get file size function 获得文件大小
def GetHttpFileSize(url):
length = 0
try:
conn = urllib.urlopen(url)
headers = conn.info()
except Exception, err:
pass
return int (headers['Content-Length'])
#分割文件方便多线程下载
def Split(size,blocks):
ranges = []
blocksize = size / blocks
for i in xrange(blocks-1):
ranges.append((i*blocksize,blocksize*i+blocksize-1))
ranges.append(( blocksize*(blocks-1), size-1))
print ranges
return ranges
#建立多线程
url = 'http://guidetodatamining.com/guide/ch2/BX-Dump.zip'
thread_num = 5
file_len = GetHttpFileSize(url)
l=threading.Lock()
ranges=Split(file_len,thread_num)
f=open("multithreads.zip",'wb+')
childthreads=[]
for i in range(thread_num):
t = threading.Thread( target = threadcode, name="Thread-%d" % i,args=(ranges[i]))
t.start()
childthreads.append(t)
for t in childthreads:
t.join()
f.close()
print 'down'
python多线程下载多个文件_python多线程下载文件 练习1相关推荐
- python不同数据的读入_python读写不同编码txt文件_python读写txt文件
python读写不同编码txt文件_python读写txt文件 以后整理规范 [python] view plaincopy import os import codecs filenames=os. ...
- python 多线程读写文件_Python多线程同步---文件读写控制方法
1.实现文件读写的文件ltz_schedule_times.py #! /usr/bin/env python #coding=utf-8 import os def ReadTimes(): res ...
- python 多线程读写文件_python多线程同步之文件读写控制
本文实例为大家分享了python多线程同步之文件读写控制的具体代码,供大家参考,具体内容如下 1.实现文件读写的文件ltz_schedule_times.py #! /usr/bin/env pyth ...
- python多线程处理文件_python多线程分块读取文件
# _*_coding:utf-8_*_ import time, threading, ConfigParser ''' Reader类,继承threading.Thread @__init__方法 ...
- python下载链接下载文件_python从下载链接下载文件到本地
1.需要的python库 requests 2.代码(复制可用)#引用 requests文件 import requests #下载地址 Download_addres='https://nj02cm ...
- python如何实现下载文件_python实现下载文件的三种方法
python实现下载文件的三种方法 Python开发中时长遇到要下载文件的情况,最常用的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib从ftp站点下载文件. ...
- python读取手机文件_python 读取 网络 文件
Python之pandas数据加载.存储 Python之pandas数据加载.存储 0. 输入与输出大致可分为三类: 0.1 读取文本文件和其他更好效的磁盘存储格式 2.2 使用数据库中的数据 0.3 ...
- python本地读csv文件_python读写csv文件方法详细总结
python提供了大量的库,可以非常方便的进行各种操作,现在把python中实现读写csv文件的方法使用程序的方式呈现出来. 在编写python程序的时候需要csv模块或者pandas模块,其中csv ...
- python处理json文件_python处理json文件
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python类型转换json类型的对应关系? json类型转换到python的类 ...
最新文章
- R语言使用caret包对GBM模型自定义参数调优:自定义参数优化网格
- 怀念 儿时课本贴图,你还记得课文名吗
- 一个有关ajax去获取天气预报然后用echarts展现出来的小demo
- SAP Spartacus部署到SAP Commerce Cloud,不同的系统设置不同的OCC Base url
- java 工程新建ivy文件_Hadoop学习之路(八)在eclispe上搭建Hadoop开发环境
- 英语四级真题作文 计算机,英语四级作文 Computers-计算机_2000字_英语作文
- AndroidStudio安卓原生开发_UI高级_RecyclerView_循环复用控件_代替ListView_GridView---Android原生开发工作笔记121
- 华为 鸿蒙系统(HarmonyOS)
- 空间点到直线的距离c语言,空间两直线间距离公式(文档篇).doc
- 你都用 Python 来做什么?
- 微信第三方平台全网发布返回Api/普通文本信息失败
- span标签之间的空隙如何解决
- 别让学历限制你,你可能是AI领域的下一个巨星
- Aurelia历险记:创建自定义PDF查看器
- HTML好看个人主页展示开源源码
- 物联网设备管理的未来
- 把宇宙138亿年压缩到1年
- 朋友说要被他女朋友烦死了,竟然是因为“小视频”
- 企业月结快递管理教程
- English Learning - L2-13 英音地道语音语调 弱读技巧 2023.04.6 周四
热门文章
- 程序员离无人值班有多远?
- 斗鱼上岸:草根突围,直播逆袭!
- Windows 3.1 往事:历史上第一个真正占据主导地位的操作系统
- AI 专利之争:小米超华为,国家电网才是大 Boss?
- 酷派起诉小米:你竟敢侵我的权?
- 为什么量子计算会对我们产生威胁?
- 程序员如何淡定度过 2.14 情人节?
- 想开发微信小游戏,先看看腾讯是如何制定规则的
- oracle执行策略是什么意思,郁闷的问题:oracle pl/sql 和 pro c中的执行策略
- 眼图matlab仿真_MATLAB开发自动驾驶第二十课-自动驾驶场景设计器中的预建驾驶场景...