python sys.exit 退出 多进程 多线程_Python自动化学习笔记(十)——多进程,多线程,异常处理,faker模块,sys模块,jsonpath模块...

1.多线程

1.1多线程创建和启动

进程:一些资源的集合

线程:程序执行的最小单位

线程包含在进程内,进程是由若干线程组成的,一个进程至少有一个线程。

多任务可以由多进程完成,也可以由一个进程内的多线程完成。

启动一个线程就是把一个函数传入并创建Thread实例,然后调用start()开始执行,循环创建线程时,应当全部创建完毕后,再循环每一个线程执行t.join,否则和串行效率就一样了,代码示例:

importthreadingimporttimedefrun():

time.sleep(1)print('run.............')

starttime=time.time()

threads=[]for i in range(20):#循环创建20个线程

t1=threading.Thread(target=run,) #实例化一个线程

threads.append(t1)

t1.start()#启动线程#for t in threads:#循环每一个线程并t.join来等待#t.join() #主线程等待子线程执行结束

while threading.active_count()!=1:passendtime=time.time()print(endtime-starttime)

一个多线程下载图片的例子如下

两个知识点:

多线程运行时拿不到函数的返回值,可以定义一个全局变量,把返回值存储到全局变量中

实例化线程时,函数运行的参数可以通过一个list传入,t=threading.Thread(target=download_pic,args=(url,))

importrequestsfrom hashlib importmd5importthreadingimporttime

filename=[]defdownload_pic(url):

r=requests.get(url)

file_name=md5(r.content).hexdigest() #文件内容md5后的字符串拿来当作文件名

with open(file_name+'.jpg','wb')as fw:

fw.write(r.content)

filename.append(file_name)#多线程运行时拿不到函数的返回值,可以定义一个全局变量,把返回值存储到全局变量中

urls=['https://cn.bing.com/az/hprichbg/rb/GoldenEagle_ZH-CN2823955379_1920x1080.jpg','https://cn.bing.com/az/hprichbg/rb/GoldenEagle_ZH-CN2823955379_1920x1080.jpg','https://cn.bing.com/az/hprichbg/rb/Napo

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值