
python多线程的一些问题 50
有原任务代码如下:num=0forimgurlinurllist:urllib.urlretrieve(imgurl,savepath,callbackfunc)prin...
有原任务代码如下:
num = 0
for imgurl in urllist:
urllib.urlretrieve(imgurl, savepath, callbackfunc)
print '正在下载图片' + str(imgurl)
num = num + 1
其中num是计数用,从urllist(链接列表)中取得imgurl,下载图片,通过回调函数显示进度
正常情况下,似乎是这样:
正在下载图片11111.jpg
20%
一行显示'正在下载图片' + str(imgurl)的内容,下一行显示进度,通过\r不断刷新。
现有问题如下:
1,多线程执行下载任务,同时下载多张图片,并且数量可以方便调节
2,num数正常叠加,不会彼此影响
3,进度如下面这样显示出来:
(注:同一行内不断刷新变化)
正在下载图片11111.jpg
20%
正在下载图片22222.jpg
16%
正在下载图片33333.jpg
27%
不用在意具体数值,举例而已。
要求可用的代码,分不多,50奉上 展开
num = 0
for imgurl in urllist:
urllib.urlretrieve(imgurl, savepath, callbackfunc)
print '正在下载图片' + str(imgurl)
num = num + 1
其中num是计数用,从urllist(链接列表)中取得imgurl,下载图片,通过回调函数显示进度
正常情况下,似乎是这样:
正在下载图片11111.jpg
20%
一行显示'正在下载图片' + str(imgurl)的内容,下一行显示进度,通过\r不断刷新。
现有问题如下:
1,多线程执行下载任务,同时下载多张图片,并且数量可以方便调节
2,num数正常叠加,不会彼此影响
3,进度如下面这样显示出来:
(注:同一行内不断刷新变化)
正在下载图片11111.jpg
20%
正在下载图片22222.jpg
16%
正在下载图片33333.jpg
27%
不用在意具体数值,举例而已。
要求可用的代码,分不多,50奉上 展开
1个回答
展开全部
#随便写了下 没有验证 有问题追问
import urllib
import threading
class DownPic(threading.Thread):
def __init__(self,url,savePath):
self.url=url
self.savePath=savePath
def reporthook(self,bk,bs,size):
print "Downloading %.2f%%" % (bk*bs/size*100),sys.stdout.write("\r"),
def getPic(self,url=self.url,savePath=self.savePath):
urllib.urlretrieve(url,savePath,self.reporthook)
def run(self):
self.getPic()
if __name__=="__main__":
urlList={1,2,3,4,5}#replace with your urlList
savePath="d:/1.jpg"#replace with your savePath
for url in urlList:
down=DownPic(url,savePath)
down.start()
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询