当前位置:首页 » 编程语言 » python多线程下载

python多线程下载

发布时间: 2022-08-23 19:51:53

‘壹’ python多线程作用

总结起来,使用多线程编程具有如下几个优点:
进程之间不能共享内存,但线程之间共享内存非常容易。
操作系统在创建进程时,需要为该进程重新分配系统资源,但创建线程的代价则小得多。因此,使用多线程来实现多任务并发执行比使用多进程的效率高。
Python 语言内置了多线程功能支持,而不是单纯地作为底层操作系统的调度方式,从而简化了 Python 的多线程编程。

在实际应用中,多线程是非常有用的。比如一个浏览器必须能同时下载多张图片;一个 Web 服务器必须能同时响应多个用户请求;图形用户界面(GUI)应用也需要启动单独的线程,从主机环境中收集用户界面事件……总之,多线程在实际编程中的应用是非常广泛的。

‘贰’ python 多线程

python支持多线程效果还不错,很多方面都用到了python 多线程的知识,我前段时间用python 多线程写了个处理生产者和消费者的问题,把代码贴出来给你看下:
#encoding=utf-8
import threading
import random
import time
from Queue import Queue

class Procer(threading.Thread):

def __init__(self, threadname, queue):
threading.Thread.__init__(self, name = threadname)
self.sharedata = queue

def run(self):
for i in range(20):
print self.getName(),'adding',i,'to queue'
self.sharedata.put(i)
time.sleep(random.randrange(10)/10.0)
print self.getName(),'Finished'

# Consumer thread

class Consumer(threading.Thread):

def __init__(self, threadname, queue):
threading.Thread.__init__(self, name = threadname)
self.sharedata = queue

def run(self):

for i in range(20):
print self.getName(),'got a value:',self.sharedata.get()
time.sleep(random.randrange(10)/10.0)
print self.getName(),'Finished'

# Main thread

def main():

queue = Queue()
procer = Procer('Procer', queue)
consumer = Consumer('Consumer', queue)
print 'Starting threads ...'
procer.start()
consumer.start()
procer.join()
consumer.join()
print 'All threads have terminated.'
if __name__ == '__main__':
main()

如果你想要了解更多的python 多线程知识可以点下面的参考资料的地址,希望对有帮助!

‘叁’ python如何实现文件的下载,请尽量详细,高分!!!

import os,urllib.request,re
os.chdir(r'd:')

data = urllib.request.urlopen(url).read()
with open(filename, 'wb') as f:
f.write(data)

url就是你要下载的文件链接,filename就是下载后保存的文件名。这段代码是把文件下载在d盘根目录下,你可以自己修改。

不过是单线程的,想要多线程下载,比较复杂,我没有试过,这个下载小文件还是没有问题的。

‘肆’ python如何加速下载ZiP文件

想要加速zip文件的下载,就必须要用到python的多线程处理能力,常用的库是 threading。默认情况下,该库Python会默认安装,因此可以直接在代码中导入。
下载时根据文件的size,切分成几个线程分别下载文件,下载完成以后再拼接到一起。

‘伍’ python 怎么实现多线程的

线程也就是轻量级的进程,多线程允许一次执行多个线程,Python是多线程语言,它有一个多线程包,GIL也就是全局解释器锁,以确保一次执行单个线程,一个线程保存GIL并在将其传递给下一个线程之前执行一些操作,也就产生了并行执行的错觉。

‘陆’ python3 做一个多线程下载文件的程序 多线程问题

可以用is_active来判断。
不过你可以预分配文件空间,直接写,主要不冲突就行了。

‘柒’ python多线程的一些问题

#随便写了下没有验证有问题追问
importurllib
importthreading
classDownPic(threading.Thread):
def__init__(self,url,savePath):
self.url=url
self.savePath=savePath
defreporthook(self,bk,bs,size):
print"Downloading%.2f%%"%(bk*bs/size*100),sys.stdout.write(" "),
defgetPic(self,url=self.url,savePath=self.savePath):
urllib.urlretrieve(url,savePath,self.reporthook)
defrun(self):
self.getPic()

if__name__=="__main__":
urlList={1,2,3,4,5}#replacewithyoururlList
savePath="d:/1.jpg"#replacewithyoursavePath
forurlinurlList:
down=DownPic(url,savePath)
down.start()

‘捌’ python多线程并发访问多个URi

我想问问看你说的”访问一个站点“是什么意思,是下载一个文件吗?还是需要submit一些表单上去还是其他什么访问法?还有多线程是用来干什么的?是多个线程同时下载一个文件让这个文件可以下载得更快吗?还是其他什么目的?
本身python访问web就很简单,urllib的几个函数一调用就好了,不过不清楚你想要做什么,所以我感觉不知道怎么回答你。

‘玖’ Python 多线程并发控制问题

python线程有两种,类或者函数
后者很简单,就跟pthread一样用啊。
不要打印就好了,或者你自己维护一个print加个自旋锁
第三个从但是开始就没看懂
既然要加print那一定要加锁了,否则是没办法
既然你想搞一个控制线程,那就由它来打印咯

热点内容
你们家的无线网密码是多少 发布:2025-01-18 09:47:50 浏览:729
renderscriptandroid 发布:2025-01-18 09:32:18 浏览:992
安卓手机如何拍游戏素材 发布:2025-01-18 09:30:59 浏览:347
广州日立压缩机有限公司 发布:2025-01-18 09:15:08 浏览:623
服务器两条宽带如何叠加网速 发布:2025-01-18 08:52:17 浏览:730
oracle存储过程集合 发布:2025-01-18 08:42:39 浏览:884
洋葱数学缓存 发布:2025-01-18 08:38:36 浏览:918
电影的文件夹都是 发布:2025-01-18 08:21:49 浏览:835
post提交php 发布:2025-01-18 08:21:42 浏览:460
如何禁止写入文件夹 发布:2025-01-18 08:21:04 浏览:363