00:00
非常简单,那么就把这个案例呢拿过来,我们运行一下就行了,来走一个。好,现在呢,我新建一个文件叫per,我就简写这个PAR,然后呢DEMO01。哎,201那个P呢,我们大写。好,各位同学啊,我们来跑一段代码,这段代码同学们可以看到啊,我们是1TO5FOR each这个地方呢,掉了一个print,那么把这个写到这,你看这个地方应该这样写也可以。好,这个写法,这个写法呢,等价于这个写法。啊,这个写法什么意思呢?就说呃,这个下划线就代表从一到五取出的指针进去啊,你也可以不写,不写的话,它默认呢,在这个分本身也会,我们刚才写的这个模拟代码就很重要了,它在这个for里面也会把这个便利在里面,底层便利把这个纸传传给这个分,那我这样写一下呢,就代表明确告诉你,将来你便利出来的这些值直接扔到这个位置。
01:01
啊也这样也更理解的更深刻了,好那么现在呢,我们这句话呢,我这加了一个PAR,那么我们来执行一下,运行一把,好同学们请看执行的效果非常的有意思,来同学们可以看到我们第一个执行的顺序是12345,它是按照顺序执行的,那到了我们第二个你发现是12453,那说明什么呢?那说明他们在进行这个输出的时候,其实他是把这个集合的任务,就是个输出任务分散到不同CPU,那这样的话呢,就有可能造成我们有一些数打的快,有一些数打的慢,这也就是这就充分证明我们在调这个print的时候,底层它充分利用了我们CPU。所以说这就是体现出它的并行计算。啊,这里输出的结果啊,输出的结果是无序的,无序无序的说明说明是将将什么呢?将print LN的这个任务啊,任务分配给了,分配给不同的CPU啊这样呢,就会出现这个输出的效果啊同学们以后呢,假如将来哈,你这边有一个任务。
02:15
要干什么事情呢?有一个很大很大的集合,每一个数据都要进行这个大量计算。然后得到一个新的集合,这时你很简单,只要在前面加个P就行了。啊,它都支持你,比如说前面我们讲的这种list啊,比如说我们这有一个list。他一样支持这个PAR,好给大家写一下,比如说有一二。345OK,那现在看到list,比如说这个map,好,这是我们常规的写法,那你像这个PAR。你看写个power在map也是可以的,那这样子所说相当于说我们对这个list里面的这个呃元素进行这个map映射的时候呢,是多核来计算,速度肯定会很快,同学们有兴趣晚上呢,可以把这个数据整一个特别大的。
03:05
啊,你用这个for循环整上这个,那这个呃,一一百万个,然后让这个脉搏计算呢,里面再循环多多久,你会看到它完成的时间,他加入这个parent go,完成的时间会比这种时间要快,快多少呢?一般来商你的CPU多少个就会快多少倍,比如说你的CPU4个。你有四个CPU的这个四个核,那么你加上这个power呢,它的速度会比那个快四倍。同学们有兴趣可以测试啊,有测有兴趣可以测试,好简单说到这里,好,也就说这里面呢,都可以用啊,好,我把这个小案例就说完了,说完过后我们再看一个案例,就是我们再写一个案例呢,我们看看并行集合中元素访问到底使用了多少个线程,再次证明好代码也很简单,我给同学们直接在这跑一下就行了。同学们再看这段代码,诶这段代我们来跑一下这个这段代码呢,这段代码是我先把这个注销。
04:08
啊,干脆这样子啊,我们新建一个吧,别写写在一起了,写在一起啊,看起来比较比较吃力,好,我新建一个小文件,这个名字呢,我们就叫per。然后呢,DEMO02快速的走一下。好,同学们请看这段代码啊,直接写到这,那这段代码做了一件什么事情呢?啊,这段代码是我零到100进行一个遍利,然后进行一个map的操作,里面呢,我传了一段代码,然后呢,让他输出当前线程的名字是多少,这个呢我用的是并行。啊,并行计算,我们看两个输出的这个效果是什么样子啊,为了以示区别,我把这个给它打一个间隔线。好,同学们可以看到第一个是用的什么呢?这个非并行。
05:02
非并行的。第二个呢,用的是并行计算,大家看到啊,就是并行计算,好同学们我来执行一下,当我们运行完了后,我们看到这个效果就已然出来了。同学们看第一种。我们发现它一共。运行了一啊,这个跑了跑了跑了这个一啊100次应该是啊,101次啊,大家可以数一数,然后呢,下面呢,你看也有这么多好同学们看第一个里面这个线程的名称始终是主函数主线程。那下面这个地方有这么多,那到底是多少个呢?好,为了好看,我这加一个distinct。Distinct的这个东西呢,它有个用就是呃,去重复,同学们在学MY的时候,老师应该讲过distinct它是用来去重的,是吧,比如select新from什么表,但是呢,假设我们有重复数据distinct的,那我这也来distinct一下,同学们再看效果就非常的明显,走一个。
06:04
哎,同学们请看,这时看到就到位了哦,第一个并行啊,非并行其实始终只用了一个线程。到了我们第二个并行呢,我们一共有四个,四个线程,为什么四个呢?因为我只有四个和,如果你们有八个和,就应该看到有八个工作线程在执行,这充分证明这一个P还是很厉害的,所以说从你理论上来说,这个时间。这个资金的时间是这个时间的四倍,或者说我并行比你快十倍,就是你假如说是你假如花了14分钟,我只需要一分钟就搞定。OK,这个呢,大家以后要充分的应用啊,我再说一遍,就是我们讲了两两种这个优化的好,那关于这一个并行集合的这个东西呢,我们就给大家介绍到这里,同学们,我把这个应用案例给大家整理一下啊。OK啊,这种代码也比较简单,好,我直接给大家板述一下就行了。
07:05
好,我们整理一下这个代码啊,应用案例一共讲了俩啊,讲了俩。英文里两个。好,这个地方是V,我还没有讲这个并行啊,把这个并行集合这做一个笔记。好,这边我们讲的是一个并行集合,对并行集合好的,这是我们的标题二对吧,那并行集合是什么呢?我这做了一个基本的介绍。诶以后呢,要充分利用它,你像这样一写的话,你的效率就上去了啊。不要小看这些东西,好像很小对吧,但是它就是管用啊,所以我们这个要从语言层面上一改就OK,这是最好的,不用大刀阔斧的进行这个什么样?呃,不一定非要非要对这个整体结构改动,那个整体结构改动呢,一般是迫不得已才去改啊,尽量在语言层面上就改了。
08:01
好,这是它的基本介绍,那下面呢,我们讲了它的两个应用案例。二两个应用案例来整一个。两个应用案例,第一个呢,就是呃打印,诶打印这个呢,我给他来一个箭头,诶来一个箭头打印,第二个呢,查看并行集合里面的线程数对不对。好,我们把这个代码给大家阐述一下啊,这是这段代码。很简单啊,给它放到这儿。从这呢,我们可以看出来执行的顺序就已经啊呃,看出来效果了,第二个查看我们并行的。这个线程数。在这里好,我把这个代码呢,叫他拿过来。这点我加了distinct,看得更清晰了。放入到一个表格中好了。好,那么关于并行啊,关于我们的这个并行集合呢,就给大家介绍到这里。
我来说两句