当前位置: 首页 > 网络应用技术

什么是Python线程池(2023年的最新答案)

时间:2023-03-07 19:54:05 网络应用技术

  指南:本文的首席执行官注释将介绍Python线程池的相关内容。我希望这对每个人都会有所帮助。让我们来看看。

  在实际的处理数据中,由于系统内存有限,我们无法一次导出所有数据,因此我们需要按批处理导出。为了加快操作,我们将使用多线程方法进行数据处理。

  主要分为三个部分:

  总共4个部分总结了多线程内容。

  让我首先介绍该线程的相关概念:

  在超速节目中,如果没有多线程,我们将在听歌曲,听歌曲和玩游戏的同时演奏速度,这是无法平行的。使用多线程后,我们可以在玩游戏时收听背景音乐。在此示例中,启动超速程序是一个过程。玩游戏和听音乐是两个线程。

  Python提供了实现多线程的线程模块:

  因为新线程系统需要分配资源,并且线程系统的终止需要回收资源,因此,如果可以重复使用线程,则可以减少新构建/终止费用以提高性能。在同一时间,线程池的语法为比新线程执行线程更简洁。

  Python为我们提供了ThreadPoolExecutor来实现线程池,这在此线程池中是防御性的。它的适应场景是大量突然的请求,或者需要大量线程来完成任务,但是实际的任务处理时间很短。

  MAX_WORKER是线程池中的线程数。常用的遍历方法包括地图和提交+as_completed.cording。根据不同的业务方案,如果我们需要按遍历的顺序返回输出结果,我们将使用地图方法。如果我们想先完成谁,我们将使用cumber+as_complete方法。

  我们将在一段时间内使用的一个线程称为关键资源,必须执行对关键资源的访问。Mutual排除,也称为间接限制。线程相互谴责意味着,当线程访问关键资源时,其他想要访问关键资源的线程必须等待。当前对关键资源的访问已经结束,并且在发布资源后,另一个线程可以访问关键资源。锁的功能是实现相互拒绝线程的函数。

  我把线路放到厕所私人房间的大型过程中,因为私人房间里只有一个坑,所以只有一个人可以进行大尺寸。当第一个人想去厕所时,门将被锁定。目前,如果第二个人也想大大,则必须完成第一人称,并且可以继续进行锁。在此期间,两者只能在门外等待。此过程与使用代码中使用锁定的原理完全相同。这里的坑是关键资源。Python的线程模块引入了锁。线程模块提供了一个锁类,该类具有以下方法锁定和释放锁:

  我们会发现该程序只会打印“第一个锁”,并且该程序既不会终止也不继续运行。执行,这使得无法执行版本,因此锁定永远无法释放。这是僵局。如果我们使用RLOCK正常运行,就不会发生僵局。

  定义主线程中的锁定锁,然后锁定,然后创建一个子线程t运行主函数以释放锁定。

  如果将上述锁更改为RLOCK,则报告了一个错误。设计程序时,我们将将每个功能封装到一个函数中,并且每个功能中可能存在关键区域,因此需要RLOCK。

  总之,无法打包锁,可以设置RLOCK;锁可以由其他线程中的锁操作,而Rlock只能由该线程操作。

  最近,我正在做一个相关的项目。整个电线的整个电台爬网确实不大,而且也厌倦了一次跑步。在这里有几个主要问题(关于Python的python多线程的吉尔问题,都不再提及,有几个主要问题在线太多)。

  首先,由于多线程可以缩短程序的运行时间,因此线程数量越大,越好?

  显然,每个线程都不是世代相传的。太多的线程会占用太多的系统资源(内存开销,CPU开销),并且生成太多线程时间是相当多的。这是最佳线程数量的计算方法:

  获得最佳线程号:

  1.慢慢通过用户增加性能压力测试,观察QPS(即每秒响应请求的数量,即最大吞吐量。),响应时间

  2.根据公式计算:服务器端的最佳线程号=((线程等待时间+线程CPU时间)/线程CPU时间) * CPU数量

  3.单用户压力测试,检查CPU消耗,然后直接乘以百分比,然后执行压力测试。通常,最好的线程接近该值的值。

  2.为什么要使用线程池?

  对于任务数量不断增加的过程,每个任务都会生成一个线程,这最终将导致线程数的失控。获取此链接对应于相应页面上的新链接。作为一项新任务,目前必须为这些新链接生成新线程,并且线程数量飙升。在后续操作中,线程数将继续增加,并且无法完全控制。对于增加任务数量的过程,需要一个带有许多固定线程的线程池。

  如何使用线程池

  过去,使用了螺纹池模块,现在使用并发模块通常使用。该模块是Python3随附的模块。但是,也可以安装和使用Python2.7的版本。

  注意:

  conturrent.futures.threadpoolexecutor,在提交任务时,有两种方法是cumber()函数,另一个是map()函数。两者之间的主要区别是:

  使用线程池可以有效地控制系统中的并发线程的数量。当系统包含大量并发线程时,系统性能将急剧降低,甚至python解释器崩溃,以及该系统的最大数量参数数量线程池可以控制系统中并发线程的数量不超过此数字。

  结论:以上是首席CTO注释为每个人编译的Python线程池的全部内容。感谢您阅读本网站的内容。我希望这对您有帮助。有关Python线程池的更多相关内容,请不要忘记此站点上的信息。