Python高并发和多线程有什么关系

 更新时间:2020年11月14日 12:03:44   作者:迎风而来  
这篇文章主要介绍了Python高并发和多线程有什么关系,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

“高并发和多线程”总是被一起提起,给人感觉两者好像相等,实则 高并发 ≠ 多线程

多线程是完成任务的一种方法,高并发是系统运行的一种状态,通过多线程有助于系统承受高并发状态的实现。

高并发是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,主要发生在web系统集中大量访问或者socket端口集中性收到大量请求(例如:12306的抢票情况;天猫双十一活动)。

该情况的发生会导致系统在这段时间内执行大量操作,例如对资源的请求,数据库的操作等。如果高并发处理不好,不仅仅降低了用户的体验度(请求响应时间过长),同时可能导致系统宕机,严重的甚至导致OOM异常,系统停止工作等。如果要想系统能够适应高并发状态,则需要从各个方面进行系统优化,包括,硬件、网络、系统架构、开发语言的选取、数据结构的运用、算法优化、数据库优化……而多线程只是其中解决方法之一。

实现高并发需要考虑:

  • 系统的架构设计,如何在架构层面减少不必要的处理(网络请求,数据库操作等)
  • 网络拓扑优化减少网络请求时间、如何设计拓扑结构,分布式如何实现?
  • 系统代码级别的代码优化,使用什么设计模式来进行工作?哪些类需要使用单例,哪些需要尽量减少new操作?
  • 提高代码层面的运行效率、如何选取合适的数据结构进行数据存取?如何设计合适的算法?
  • 任务执行方式级别的同异步操作,在哪里使用同步,哪里使用异步?
  • JVM调优,是以server模式还是以clien模式运行,如何设置Heap、Stack、Eden的大小,如何选择GC策略,控制Full GC的频率?
  • 数据库优化减少查询修改时间。数据库的选取?数据库引擎的选取?数据库表结构的设计?数据库索引、触发器等设计?是否使用读写分离?还是需要考虑使用数据仓库?
  • 缓存数据库的使用,如何选择缓存数据库?是Redis还是Memcache? 如何设计缓存机制?
  • 数据通信问题,如何选择通信方式?是使用TCP还是UDP,是使用长连接还是短连接?NIO还是BIO?netty、mina还是原生socket?
  • 操作系统选取,是使用winserver还是Linux?或者Unix?
  • 硬件配置?是8G内存还是32G,网卡10G还是1G?

以上的这些问题在高并发中都是必须要深入考虑的,就像木桶原理一样,只要其中的某一方面没有考虑到,都会造成系统瓶颈,影响整个系统的运行。而高并发问题不仅仅涉及面之广,同时又要求有足够的深度!!!

而多线程在这里只是在同/异步角度上解决高并发问题的其中的一个方法手段,是在同一时刻利用计算机闲置资源的一种方式。

多线程在解决高并发问题中所起到的作用就是使计算机的资源在每一时刻都能达到最大的利用率,不至于浪费计算机资源使其闲置。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • django 扩展user用户字段inlines方式

    django 扩展user用户字段inlines方式

    这篇文章主要介绍了django 扩展user用户字段inlines方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • pytorch中的nn.ZeroPad2d()零填充函数实例详解

    pytorch中的nn.ZeroPad2d()零填充函数实例详解

    这篇文章主要介绍了pytorch中的nn.ZeroPad2d()零填充函数实例详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • web.py在模板中输出美元符号的方法

    web.py在模板中输出美元符号的方法

    这篇文章主要介绍了web.py在模板中输出美元符号的方法,即在web.py的模板中输出$符号的方法,需要的朋友可以参考下
    2014-08-08
  • Python实现将字符串的首字母变为大写,其余都变为小写的方法

    Python实现将字符串的首字母变为大写,其余都变为小写的方法

    今天小编就为大家分享一篇Python实现将字符串的首字母变为大写,其余都变为小写的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • python tkinter之顶层菜单、弹出菜单实例

    python tkinter之顶层菜单、弹出菜单实例

    这篇文章主要介绍了python tkinter之顶层菜单、弹出菜单实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • python虚拟环境virtualenv的使用教程

    python虚拟环境virtualenv的使用教程

    本篇文章主要介绍了python虚拟环境virtualenv的使用教程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Python实现初始化不同的变量类型为空值

    Python实现初始化不同的变量类型为空值

    这篇文章主要介绍了Python实现初始化不同的变量类型为空值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • python中类的一些方法分析

    python中类的一些方法分析

    这篇文章主要介绍了python中类的一些方法分析,实例讲述了Python中子类调用父类时继承的方法问题,需要的朋友可以参考下
    2014-09-09
  • python读取配置文件方式(ini、yaml、xml)

    python读取配置文件方式(ini、yaml、xml)

    这篇文章主要介绍了python读取配置文件方式(ini、yaml、xml),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python文件路径名的操作方法

    Python文件路径名的操作方法

    对于文件路径名的操作在编程中是必不可少的,比如说,有时候要列举一个路径下的文件,那么首先就要获取一个路径,再就是路径名的一个拼接问题,通过字符串的拼接就可以得到一个路径名。这篇文章主要介绍了Python中文件路径名的操作,需要的朋友可以参考下
    2019-10-10

最新评论