00:00
好的各位小伙伴,那么在上节课呢,给大家去介绍一下我们这个计算机当中的进程与线程一个概念啊,和它的这个派件当中的一个基本实现嘛,那么接下来呢,我们看一下就是关于如何使用这个进程词和线程词,进程词的话,在我们刚才所介绍的这个这个进程的这个方法当中呢,其实它是有这个介绍的啊,就专门有一个类可以帮你完成一个进程词,我们看一下搜一下这个方法叫泡。有这么一个类,诶在哪,在下面吗。CTRL加po。大小。没找到。可能。找到了,在哪里?他怎么过不去?这个位置。使用po了一个对象啊,Po了一个对象,对这个对象是专门创建创建进程池啊,创建可以创建一个进程池的啊,进程池的话,也就是说可以这样子,我们当年进成一个一个这个叫什么一个这个进程,呃,进程数这样的话就是呃,不至于说创建多个进程啊,对就就这个东西啊,就创建进程多,但是呢,我我们实际上是这样的,就是进程的话,我们这里就不再过多介绍了,但是我们要如果要创建线程池的话,线程里边并没有这样的一个方法帮我们直接实现这个线程池,所以下边这个拍摄当中提供的另外一个一个模块啊,就是这个专门启动并行任务的这个方法里边,对包含了进程与线程这个,呃,进程与线程的这个实现它都有啊,它都有,所以这个里边呢,就可以很快速的完成这个操作,可以看一下它这里边的介绍,就是说你告诉他一个max workers啊微呃这个叫workers,然后呢,告诉他你当前的这个叫进程的这个最大数啊最大数量,然后呢,调用这个sum sum方法,然后呢帮你去完成操作啊呃,Sum啊sum米的方法来完成操作,然后呢,最后这个杀当杀,当然后这个方法呢去呃,这个叫什么?呃释放我们当前的这个叫做呃,呃释放我们这个叫啊完成的这个叫什么呢?呃,释放我们最后的这个呃近能词或者线能词啊。
01:45
评审,然后呢,它呢,它的参数默认为错,该方法将在所有未完成的期呃,这个叫什么?进程执行完毕,并且与执行者关联的资料被释放之前不会返回,也就是说最后啊,就是等到最后的时候才会把这个进程结束,而如果是false的话,他他会立即返回啊,就是并没有执行完毕,所以一般情况下都是选择为处啊,就这个操作啊,其实有小伙伴不明白这个错和false式其实不用纠结啊,其实就是同步和异步的啊问题啊,同步和异步的问题,我们这里不不过多讨论这个问题啊,那么接下来我们看一下如何去实现这个方法啊,来看C复制一下呃,实现进程词啊,实现进程时我给你写完进程词之后,你其实改一个类。
02:17
改一个方法名字就能完成我们的这个要我帮你实现线程词啊,你就可以实现进程词啊都可以了,好了,那么接下来在这里哈,我们来看一下创建一个新的脚本,则我们今天的第七个脚本,来这里邮件啊,第七个脚本啊,第七个脚本是我们当前的这个爬虫进阶啊,爬虫进阶进阶啊,为什么叫爬虫进阶呢?因为这个里边我们讲的都是关于性能相关的啊,就是盘的这个更加高效衔接啊,里边的这个叫呃,线程池线线程。线程磁诶我的个天我打不出来了,线程磁啊,线程磁啊,这个定义的实现啊实现好我们来看一下这个叫线程词啊,线程池和进程是一样的,就是说你可以固定你当前的这个叫进程或线程的数,然后这样的话,不至于说你这个工作啊,111由于工作的多,然后不停的去创建开发部门,然后呃,给这个招人手显得不太合适,就举个例子哈,比如说一个我们刚才理解为就是说一个进程可以是一个部门,然后一个县城就是一个部门当中的这个叫员工吧,啊那么这个时候呢,你不能说因为你们的这个业务的扩张,然后就不停的去扩张你们的业务部门,或者说去招人手的显示不太合适,对吧,大不了加加班呗,对不对,所以说成务员经常加班,就是因为这个苦逼的财事,对吧?好了,我们只是开个玩笑啊,那么就是希望大家能明确清这签政词,这样的话你就啊,刚通过刚才的例子非常好的啊,解释了一下这个内容啊好,那么接下来我们看一下如何去完成个操作,同样的我们还是定义一个这样的,就是说呃,做做这个销售工作的那一个内容啊,那么需要呢,传递一个参数进来,这个里面呢,我们帮你去完成啊,这个电话啊,这个。
03:44
销售,比如说给啊这个。给谁打?打电话打电话对不对?给谁来呢?给我们当前的这个N打电话对不对啊然后呢,之后呢,打打电话需要多久呢?需要三秒对不对,然后呢,Port的导入我们的T模块,然后time模块导入以后呢,每个电话我们这里看点sleep,然后呢去三秒是吧?去三秒,那么之后呢,不看一下我们这个位置呢,写一个Apple,呃给呃这个电话给呃给谁打电话就是与谁的通话结束是吧,啊这个通话通话。
04:16
通话。结束啊,结束N结束啊,结束好谁呢?就是我们当前的这个叫NN啊,通话结束好了啊,就这样的一个普通的工作啊,那么接下来我们上节课呢,是使用了这个叫进程和线程的方式,分别给大家去演示一下如何实现啊,对吧?啊,那么接下来接下来呢,这节课呢,我们主要看一下这个如何使用这个叫线程词啊,线程词来完成我们这个操作啊首先这样的,我们在这里边呢,去定义几个这个叫呃,定义个列表吧,有我们要需要分别给这些人打电话,对不对,大家注意看啊,注意看,那这个地方呢,有谁呢?有刘德华,然后呢,有吴彦祖是吧?啊好多小妹子啊,好多好多小妹妹啊,都比较喜欢吴彦祖,这个吴彦祖。如果是吴彦祖和马云,你喜欢谁呢?对吧,你说你喜欢一米六的是吧,杨超啊,然后再来再来,还有谁呢?还有周杰伦啊,周杰伦的这个歌还是真的啊,真的哎,不知道咱们咱们这个小伙伴们,就是看我视频的小伙伴有没有这个。
05:14
诶,林俊杰啊,不知道有没有这个就零零后或者是零几后啊,我估计会有啊对,然后呢,大家可能对周杰伦这个就是印象比较没那么深刻哈,因为像我们的话就是周杰伦的歌曲我们听的还是比较经典的好吧,啊就像我们一开始这个,呃,老一辈,然后听周杰伦歌的时候,觉得周杰伦歌是什么呀,其实上就跟我们现在感受一样,我们听现在呃,比如说会唱会唱会rap的那个哥们唱的歌,那什么玩意,哎呀,可能那也是一种时尚和流行,对不对?嗯,我们年龄大好了,来不考虑这个问题啊,来继续看这个位置呢,我们去创建了几个用户,然后呢,需要给分别给这个用户打电话,正常情况我们就写一个循环,然后往里扔,完事了,对不对啊,那么接下来我们看一下如何使用这个叫线生词来完成操作呢?首先的话,需要从我们刚才使用的这个Python当中的模块中导入这个导入这个类啊,来看一下怎么导。1SORRY,这个关掉。打开我们M啊,从这个模块当中,然后呢,导入我们的那个类这个R。
06:06
对,就这个这个就是我们当前实现这个叫什么来实现我们的这个叫进程词啊这么一个类哈,那么接下来首先我们看一下怎么做啊,首先第一步啊,第一步啊创建叫第一步创建进程词,创建线程词啊sorry,我老说进程线程词好,创建线程值的话就是嗯,创建一个po,等于我们当前的这个类括号,然后呢,呃,里边写上我们当前的max max方哎,它有个参数啊。S是这个吧,刚才好像看的是这个啊,来比如说我们只创建三个,也就说这个时候我们有五个人,但我只创建三个,三个线程,原来的话按照我们的方式的话,你这一循环不就创造五个线程嘛,对不对,就这个操作啊好来看一下第二步啊,第二步来这个循环循环这个给呃循环指派指派任务指派。自拍任务直拍任务啊任务这个这个循环首先是上来之后就咔咔的全执行完了,知道吧,啊来哎in我们的印我们的user来哎,User历史上好,然后接下来呢,在里边的指定任务的话啊,这是第二步,第二步第二步来。
07:11
这个指定对应对应任务,任务和和参数和参数怎么创建呢?这个位置哈,用pol点上调用这个方法叫sub b MIT啊参密的这个方法,然后呢,指定的参数是work,就是你调用的那个方法名是什么,然后它对应的参数是什么,参数的话就是我们当前的这个叫userr对吧,这个用户啊用户传进去啊行去叫用户吧,啊用户传进去us就这样啊传进去以后呢,下边诶扫了下边这个位置呢,啊就是最后结束,呃结束完以后呢,我们下面呢,第三步就是第三步就是关闭啊关闭关闭这个叫线程,线程啊关闭我们线程的话,Po点上这个叫啊。TD看一下u down这里来,这里边要写这个,刚才这个参数是吧,错啊,其实不写的话,默认也是错啊,就不用写了,好呃,指派任务我看看啊,指派任务我们调整一下吧,别这么写了,别这么写,稍微改正一下,就for这个位置写成一个中括号for for派。
08:13
List,然后呢,接下来呢,在这个里边啊,对于我们这个方法进行这样的一个操作,这不就得了吗?我们省的这么写了对不对,嗯。来这个语法更简洁一些是吧?啊来这里呢,是啊,这个循环创建循环指派,指派任务,指派任务和参数,任务和参数,好来这个时候啊,右键运行我们当前的脚们重新看看。来给刘德华打,给吴彦祖打,给梁朝伟打对不对,然后结束以后,立马刘打出去了啊对,来我们先写上,先写上就这三个好吧,先写三个啊来右建玉行中,你看他来刘德华打,无彦组打,杨超伟打,然后咔咔的一会就都结束了,看他刘德华结束,无彦组结束,杨超伟结束对不对?好,那如果有四个有呃或者有有有那个刚才有五个对不对,有五个的时候,我班呢,咔咔的先启动这三,这三个启同时启动,启动完成以后,不管这三个的哪一有,可他不一定说刘德华先打完也要,可能吴彦祖也要,可能杨兆伟啊,不管哪一个先打完之后,立马就开始干完,他结束以后立马去击接第二个组,也就是说就这三个人,然后给这五个人打电话,三个员工给三个员工是三个线场啊,三个员工给这五个呃人去打电话,也就是说,比如说刘德华这个线结束了,那就刘德华再去接周杰伦了,那吴彦祖结束以后,吴彦祖去接刘俊杰了,那么梁德伟结束以后发现没有了,好没有之后就等着结束就行了啊,因为他他就等着释放掉就可以了,来刘建宇现象看着啊,来刘德华,吴彦祖,梁朝伟。
09:26
起来看到没哈,给刘德华的通话结束以后,你立马就吴彦祖的通话是不是就起来了,那就证明是不是刘德华那个人给吴彦祖的,哎,不对,刘德华给周杰伦打的对不对,然后吴彦祖那个结束以后,是不是给呃再给谁打,给那个林俊杰打的梁梁朝伟的那个,呃,通话结束以后,后边是周杰伦和林俊杰的通话结束啊,这个就过程就完事了啊,这就我们当年使用这个叫多线程啊,使用多线程完成这个操作啊,当然了,这个线程我也给你写一下这个线程号吧,线程号是port EMT,使用我们的那个叫TR啊这个方法,然后呢,用这个用这个模块,用这个模块看一下。呃,这个叫线程,线程号,线程号。
10:03
冒号冒号。第二商对这个方法。来C。来重新运行右键重新。在那012是三个。这个他这个有时候执行太快了,都都不换行,你看一下啊。我们这个能画好吗?看啊,这样可以让他换行,可以让他换行来看一下这个看这个现场号,现场号是45088,然后256和42424,然后这三个同时开始,同时开始之后刘德华是不是打完0088,打完之后是不是立马立马这个呃零这个给刘德华打完电话的人就给周杰伦去电话了,对不对,哎,就说哈喽哈喽,周杰伦什吧,我是刚才给刘德华通了个电话,对不对,这个周杰伦就应该就不会挂了,对吧?好,那么这个时候呢,这个时候吴彦祖的通话结束以后,立马吴彦祖的这个呃,打吴彦祖电话,这个人又给林俊杰打了电话,对不对,然后呢,这个时候,哎呀林梁朝伟呢才结束对不对,梁朝伟的拆解束,梁朝伟的结束以后,周杰伦的结束,最后还有那个零集的结束啊,这就我们上年的这个叫执行顺序啊,执行顺序好了,这就是刚才给大家看到的啊,关于这个叫线程子啊,线程词的一个使用,当然了,你要想把这个线程词改成我们的进程词的话,只需要怎么办呢?把这个对象换掉就好了啊,这个对象换成谁呢?看大家看一下啊,就是这个里边告诉你了,呃,这个叫进程,这个叫。
11:28
啊,这个是线程啊,这个是线程,这个是进程,就是说他俩都实现了相同的接口,也就是说你如果想要叫什么呢?想要实现多线程的话,来这里。现动词与性动词直接讲一下吧,现动词与。进程池,进程池反正也不差这一个了,对不对,来这里倒过来导到两个班啊导到两个班,然后呢,你只需要你用哪一个就是用了,呃,这个位置创建线程对不对,然后呢,创建进程的话。嗯,把它换掉,Pool等于啊这个类,然后括号麦克斯下线W。然后等对这就创建。
12:04
你你把这个类换掉就OK了啊,这个是创建啊,一个是创建线程词,一个创建进程词啊,进程进程词对他俩就就这点区别,别的没了,别的没了啊对。关闭。关闭进程池和关闭线程池的结果是一样的啊,进程或线程池这都是因为都是调用的同一方法啊对,然后这个时候我们看一看,呃,这个时候我们把这个线程号也给大家写一下吧啊这个叫呃进程号,进程号的话是导入我们的OS模块来inport的,Inport的导入我们的OS模块,有小伙伴说了,川哥你为什么在这个导包的时候,这三个既然都是从系统里边导包,为什么不是写到一起,比如说这个位置可不可以这样写的,OK,当然没问题,但是实际上他不符合我们语法规范啊对,后面有时间的话,我会录一套关于这个叫还是语法规范的内容哈,就有兴趣的小伙伴可以随时关注一下啊,关注一下啊来进号建一层号,诶号号号。这个号括号,然后这个位置使用的是画括号,我们的os.tpi括号。
13:02
然后做一个逗号。然后把这个内容呢复制一下。双。In。看着C放到这个位置,放到这儿。OK了啊,来右键运行重点。好的。他们线程是都同一同样,但是进程不一样,进程不一样,对这个位好,呃,当然还是那句话啊,还是推荐啊,推荐优先推荐使用优先推荐使用线程啊。只是推荐推荐使用,推荐使用多使用多线程或线程多或者是线程使用线程词,当然最好是推荐你使用线程词来实现我们这个程序的一些开发啊好了,那么这节课的内容就给大家讲解多这么多,接下来的话给大家安排一个任务,就是什么呢?就是让大家去查一个网站啊,来作业任务啊,作业任务大家去爬一个网站,作业任务爬什么网站呢?这回去爬那个叫豆瓣,来看一下豆瓣,你大家都上过豆瓣吧,豆瓣的呃,就是豆瓣的话去评,呃去看他的电影对吧?角末尾点豆瓣的这个网站啊,来看这里边不是有电影的那个叫排行榜吗?看一下他电影排行榜在哪。
14:08
诶排行榜,豆瓣电影排行榜看到吗?豆瓣电影排行榜这个里边呀,小丑是第一吗。啊爬多少,爬250条数据下来,诶这个地方在哪爬的,我看一下呃,影评分类电影年度榜单呀,这个不是我们不要这个数据,我们就要这里边了,他诶怎么没有啊。一周口碑,北美票房啊。这个位置豆瓣电影套房250,就这个就这位置啊,大家把这些250个数据全给我拍下来,大家注意看一共多少页啊,来看一下。一共十页是吧,一共十页数据啊,每页每页里边就是25个,对不对,十页就250个嘛,对不对,十页250个啊好,那这样的话我告诉你用什么盘,用我们的现成卡用用这个叫多线程啊,当然大家可以先把这个功能去实现,实现完以后你考虑一下如何使用多线程来把这个程序爬出来,好吧,后边的情况下呢,我呃,我去那个写一下代码,然后给大家讲解一下,我就不详细的说了,好吧,然后剩下的话我给你,我给你这个再讲解一下关于如何使用我们的,呃呃,这个叫线程词或多线程来完成我们这个啊豆瓣电影啊TOP250的这个排序好吧,好,那这节课的话,呃,就到这里啊,希望各小伙伴能去爬一下这个豆瓣电影top宝250啊这样的话爬下来,呃,当然了,你也可以选择去爬其他数据啊,这里我我我不做呃特别明确的要求啊,就是说我至少要要求你排一个这样十页以上的数据,就大概两百五条数据以上的这样的数据啊,随便下来你也可以去爬那个,呃,这个叫什么呢?嗯,房这个叫房房价信息啊,房价信息以前我们说一下这个,我们的这个学员爬过哪些信息啊,一一个是足球网,足球网信息足球信息啊呃,大家听说过那个叫做什么网站来着,什么呃叫。
15:39
嗯。有一个有一个那个手机爱APP叫什么叫懂球地对不对,懂球地啊,懂球地就是我们之前我带的一个学员哈,然后他所在的公司,他他们在公司的话,懂球地他们叫爬足球信息,他什么呢?爬球队,爬球员,爬这个球队比赛啊,爬这个历史收入信息,然后呢,爬下来之后呢,首先做了一个发布,完了后期呢,有新的比赛的时候,他们要做数据信息,对,所以爬董流地啊,然后还有就是房价信息,房价信息房价。
16:03
房价信息啊,然后二手汽车啊,这个二手汽车啊,二手车信息,二手车数据啊数据等等啊等等这些数据啊都可以,就是大家去爬任意一些数据都行哈,那么最后我们这个有后面有一个项目要求啊,项目要求的话就是大家爬任数据哈,任意一个数据,你至少给我爬5万,5万就不低于五项手,不低于5万条,5万条,5万条数据啊,一般来讲你话我们以前爬的这个就是让学员写的话,就是至少要爬个这个二三十万条数据啊,一般是15万打底啊,然后呢,高的话,他们很快就能盘到二三十万条出,当然那是投两年啊,头两年那个时候呢,反盘没有这么没有这么大,然后呢,呃,基本上就是说反弹正势很很好就能过去啊,那现在的话就比较严啊,比较严的话,而且这个爬任何数据的话,就是现在,呃,就是措,嗯,他们的这个反华措施,第一个比较严,第二个的话就是啊,大家的个人做练习嘛,我们没必要爬那么多,所以就至少5万条数据,而且呢,用多线程或多线程实现,基本上的话就是你可以最后达到的效果呢,就是说使用个大概五到十分钟啊,五到十分钟就可以盘完这些数据,对,就是很快,我之前一个学员了。
17:04
5万个房价信息,呃,5万条呃房价信息,然后呢,用多线程实现的,它启动了一千一千多个线程吧,1000多个线程,然后呢,最后呃,这个程序跑完的话,不需要,呃就差不多也就五分钟啊,然后爬了5万点数去,所以各小伙伴的话,就是我我给他们讲的东西就那么多,现在还没有给大家讲的多,哈,还没有给大家讲的多,就是说白了我对嗯,我线下的学员的要求就是你来这儿我告诉你是什么,然后你应该怎么做,剩下的需要你自己去多动动手,多动手,当然我会指导他,因为他有问题我可以随时指导他,然后呢,由于咱们是线上的话,我可能呃嗯无法现场指导的话,就是我们沟通可能不是太方便,所以这个时候尽可能把一些东西啊都给大家去讲解一些,那这样的话,避免在后面学习过程中遇到了很多困难啊好了,那这样的话,这个我们这这个呃,这个进关于进程的这个内容呢,就先到这里,下节课呢,大家可以看一下豆瓣电影top泡250。好,我们下节课再见。
我来说两句