python 并發(fā)下載器實(shí)現(xiàn)方法示例
本文實(shí)例講述了python 并發(fā)下載器實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:
并發(fā)下載器
并發(fā)下載原理
from gevent import monkey
import gevent
import urllib.request
# 有耗時(shí)操作時(shí)需要
monkey.patch_all()
def my_downLoad(url):
print('GET: %s' % url)
resp = urllib.request.urlopen(url)
data = resp.read()
print('%d bytes received from %s.' % (len(data), url))
gevent.joinall([
gevent.spawn(my_downLoad, 'http://www.baidu.com/'),
gevent.spawn(my_downLoad, 'http://www.itcast.cn/'),
gevent.spawn(my_downLoad, 'http://www.itheima.com/'),
])
運(yùn)行結(jié)果
GET: http://www.baidu.com/
GET: http://www.itcast.cn/
GET: http://www.itheima.com/
111327 bytes received from http://www.baidu.com/.
172054 bytes received from http://www.itheima.com/.
215035 bytes received from http://www.itcast.cn/.
從上能夠看到是先發(fā)送的獲取baidu的相關(guān)信息,然后依次是itcast、itheima,但是收到數(shù)據(jù)的先后順序不一定與發(fā)送順序相同,這也就體現(xiàn)出了異步,即不確定什么時(shí)候會(huì)收到數(shù)據(jù),順序不一定
實(shí)現(xiàn)多個(gè)視頻下載
from gevent import monkey
import gevent
import urllib.request
#有IO才做時(shí)需要這一句
monkey.patch_all()
def my_downLoad(file_name, url):
print('GET: %s' % url)
resp = urllib.request.urlopen(url)
data = resp.read()
with open(file_name, "wb") as f:
f.write(data)
print('%d bytes received from %s.' % (len(data), url))
gevent.joinall([
gevent.spawn(my_downLoad, "1.mp4", 'http://oo52bgdsl.bkt.clouddn.com/05day-08-%E3%80%90%E7%90%86%E8%A7%A3%E3%80%91%E5%87%BD%E6%95%B0%E4%BD%BF%E7%94%A8%E6%80%BB%E7%BB%93%EF%BC%88%E4%B8%80%EF%BC%89.mp4'),
gevent.spawn(my_downLoad, "2.mp4", 'http://oo52bgdsl.bkt.clouddn.com/05day-03-%E3%80%90%E6%8E%8C%E6%8F%A1%E3%80%91%E6%97%A0%E5%8F%82%E6%95%B0%E6%97%A0%E8%BF%94%E5%9B%9E%E5%80%BC%E5%87%BD%E6%95%B0%E7%9A%84%E5%AE%9A%E4%B9%89%E3%80%81%E8%B0%83%E7%94%A8%28%E4%B8%8B%29.mp4'),
])
上面的url可以換為自己需要下載視頻、音樂(lè)、圖片等網(wǎng)址
更多關(guān)于Python相關(guān)內(nèi)容可查看本站專(zhuān)題:《Python Socket編程技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門(mén)與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
- python基于gevent實(shí)現(xiàn)并發(fā)下載器代碼實(shí)例
- python實(shí)現(xiàn)可以斷點(diǎn)續(xù)傳和并發(fā)的ftp程序
- Python多進(jìn)程并發(fā)(multiprocessing)用法實(shí)例詳解
- Python控制多進(jìn)程與多線(xiàn)程并發(fā)數(shù)總結(jié)
- python實(shí)現(xiàn)多線(xiàn)程的方式及多條命令并發(fā)執(zhí)行
- python并發(fā)編程之多進(jìn)程、多線(xiàn)程、異步和協(xié)程詳解
- python監(jiān)控網(wǎng)站運(yùn)行異常并發(fā)送郵件的方法
- Python實(shí)現(xiàn)多并發(fā)訪(fǎng)問(wèn)網(wǎng)站功能示例
- 實(shí)例探究Python以并發(fā)方式編寫(xiě)高性能端口掃描器的方法
- Python socket實(shí)現(xiàn)的文件下載器功能示例
- python使用urllib模塊開(kāi)發(fā)的多線(xiàn)程豆瓣小站mp3下載器
相關(guān)文章
python線(xiàn)程中的同步問(wèn)題及解決方法
這篇文章主要介紹了python線(xiàn)程中的同步問(wèn)題及解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
Python中encode和encoding的區(qū)別小結(jié)
Python是一種非常流行的高級(jí)編程語(yǔ)言,它提供了許多內(nèi)置函數(shù)和庫(kù)來(lái)方便地處理文本數(shù)據(jù),其中,encode和encoding是處理文本編碼的重要概念,本文就來(lái)介紹一下Python中encode和encoding的區(qū)別小結(jié),感興趣的可以了解一下2023-11-11
使用python創(chuàng)建Excel工作簿及工作表過(guò)程圖解
這篇文章主要介紹了使用python創(chuàng)建Excel工作簿及工作表,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
如何解決import torchvision報(bào)錯(cuò)問(wèn)題 DLL:找不到模塊
這篇文章主要介紹了如何解決import torchvision報(bào)錯(cuò)問(wèn)題 DLL:找不到模塊,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
python爬蟲(chóng)中多線(xiàn)程的使用詳解
queue是python的標(biāo)準(zhǔn)庫(kù),俗稱(chēng)隊(duì)列.可以直接import引用,在python2.x中,模塊名為Queue。這篇文章主要介紹了python爬蟲(chóng)中多線(xiàn)程的使用,需要的朋友可以參考下2019-09-09
Python將xml和xsl轉(zhuǎn)換為html的方法
這篇文章主要介紹了Python將xml和xsl轉(zhuǎn)換為html的方法,實(shí)例分析了使用libxml2模塊操作xml和xsl轉(zhuǎn)換為html的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03

