方案1:一个网络横梁,订单为1小时,并同时下载到20分钟;方案2:一个应用程序应用程序,每次需要3秒钟才能在优化之前打开页面,并使用异步并发,每次开放到200个200.millisecond。
实际上,并发的引入是提高程序的运行速度。
同时,Python提供了一些模块来帮助或简化操作。
与其他语言相比,例如:C/C ++/Java/Golang,Python确实非常慢。在某些特殊情况下,Python的速度比C ++慢100至200倍
那么Python慢的原因是什么?
GIL:全球解释器锁是用于设计计算机程序语言解释器的机制。它在任何时候只能使一个线程执行。Time执行线程。
吉尔的原因是什么?
在Python设计的早期阶段,为了避免并发问题,并解决了多线程之间的数据完整性和状态同步的问题,引入了GIL。
由于使用参考计数器执行Python中对象的管理,因此引用数为0,并且对象已释放。
例如:两个线程A和B都想引用对象OBJ,并且对象的对象被取消。线程A首先执行取消并减少对象OBJ。在这个时候,OBJ的取消过程也是如此,目前将OBJ减少了。目前,发生了多行音调切换。在这个时光
在实现多线程线程的过程中,线程将释放GIL以实现CPU和IO的并行执行,因此多线程将大大提高IO强度类型的运行效率。
测试示例来自攀登北京Xinfaidi价格信息。地址如下:http://www.xinfadi.com.cn/pricedetail.html
浏览器F12数据包分析,可以看出价格信息是由http://www.xinfadi.com.cn/getpricedata.html获得的。请求方法是发布。我们尝试在首页数据信息的第一页上获取数据,代码如下:
执行结果如下:
让我们看一下使用50页蔬菜价格信息的价格:
为了方便测试,这是运行统计程序运行时间的装饰器。最终单线程代码的代码是:
运行时间终于是:
让我们查看多线程时的运行代码:
最终操作速度提高了约10倍,结果是:
线程安全性是指在多线程环境中调用时函数和函数库,该环境可以正确处理多个线程的共享变量并使程序函数正确完成
为了确保线程的安全性,Python提供了两种方法,其中包括这两种方法,这些方法将与某些情况结合起来。
这是Python专门提供的一种数据。它的特征是将通过先进的第一或高级后输出模式的队列,以确保不会同时通过多个线程访问单个数据。因此,不会引起数据共享冲突。
此外,使用还可以实现生产者和消费者模型,并在程序之间取消使用,并可以用更少的资源来解决一些高的并发问题。
一些常见方法:
在这里,我们将上述爬行动物案例结合在一起,使用队列进行并发分析。总体过程如下:
首先,更改我们以前的爬行动物程序,并将网页分析和分析网络数据分开分开
然后写生产者和消费者
最终结果如下:
使用锁定时,在执行线程函数之前,它将首先锁定。执行完成后,将释放锁以确保只有一个线程可以占据锁
以下内容结合了一个经典银行来筹集资金的例子。让我们谈谈为什么它引入锁定
正常结果的输出应为以下:
创建两个线程A和B,因此,当A撤回A时,帐户余额将变为200,因此当执行B时,帐户余额不足,因此将提示余额,但是当我们多次运行几次时,我们运行几次几次。此后,您会发现结果将在下面发生:
这种情况的原因是因为该方法没有线程的安全性。当线程用于修改帐户的余额时,会发生线程开关,即另一个线程b来修改帐户的帐户,因此上述结果的结果出现在上面
当我们进入代码时,请在添加阻止之前更改余额的逻辑
您会看到每个操作的结果永远是错误的
因此,为了解决这个问题,Python引入了相互锁。使用方法如下:
有两个相应的代码写作,一个是通过尝试...最后...而另一个是通过模式,如下:
或者
这是一种与(更简洁使用)一起使用的方法,与上述示例结合在一起:
无论添加逻辑上的任何阻塞,最终结果都是正确的
首先了解线程的生命周期,如下图所示:
从上图,您可以看到,当构建新线程时,系统需要分配资源,并且线程系统的终止需要回收资源。线程池的优势是什么?
使用方法如下:
地图的结果和参数的顺序是固定的
AS_COMPLETED ORDES尚未修复
以下内容与上述爬行动物案例结合使用。首先
注意:使用提交时,它是返回的对象,您可以通过获取返回结果。
使用地图提交任务时,等同于启动线程以同时执行func函数
应该注意的是,当使用MAP,引入多个参数时,需要传递的变量是迭代对象,例如数组,Yuanzu等,并且参数的数量是一致的。
如果您不使用关键字来创建线程池,例如,当直接创建线程池时,您需要
多线程和Coroutine基本上是在单核中执行的,并且多过程使用多进程在多核CPU上并行执行。
因为多过程和多线程写作方法几乎是相同的,所以这里的解释不多,只有某些创建方法和使用方法。
关于Coroutine的这一部分,描述了很多内容,因此将其放在下一篇文章中进行学习和介绍。
最喜欢的朋友可以注意我的公共帐户,微信搜索:feelwow