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奉上
展开
 我来答
百度网友f0f9883
2015-01-13 · TA获得超过317个赞
知道小有建树答主
回答量:258
采纳率:100%
帮助的人:162万
展开全部
#随便写了下 没有验证 有问题追问
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()
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式