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


Posted in Python onNovember 14, 2020

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

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

高并发是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,主要发生在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?

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

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

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

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

Python 相关文章推荐
初学python数组的处理代码
Jan 04 Python
Python FTP操作类代码分享
May 13 Python
python继承和抽象类的实现方法
Jan 14 Python
解读Python编程中的命名空间与作用域
Oct 16 Python
python解决方案:WindowsError: [Error 2]
Aug 28 Python
python scipy求解非线性方程的方法(fsolve/root)
Nov 12 Python
python钉钉机器人运维脚本监控实例
Feb 20 Python
Pycharm如何打断点的方法步骤
Jun 13 Python
在python中利用try..except来代替if..else的用法
Dec 19 Python
使用Python爬取Json数据的示例代码
Dec 07 Python
M1芯片安装python3.9.1的实现
Feb 02 Python
利用python实现汉诺塔游戏
Mar 01 Python
Django跨域请求原理及实现代码
Nov 14 #Python
Pycharm如何自动生成头文件注释
Nov 14 #Python
分布式全文检索引擎ElasticSearch原理及使用实例
Nov 14 #Python
Django websocket原理及功能实现代码
Nov 14 #Python
Pycharm常用快捷键总结及配置方法
Nov 14 #Python
Django model class Meta原理解析
Nov 14 #Python
详解python爬取弹幕与数据分析
Nov 14 #Python
You might like
php生成WAP页面
2006/10/09 PHP
php 输出双引号"与单引号'的方法
2010/05/09 PHP
PHP 命名空间实例说明
2011/01/27 PHP
php实现快速排序的三种方法分享
2014/03/12 PHP
php中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
WordPress主题制作之模板文件的引入方法
2015/12/28 PHP
PHP实现微信对账单处理
2018/10/01 PHP
PHP的PDO预处理语句与存储过程
2019/01/27 PHP
php实现JWT(json web token)鉴权实例详解
2019/11/05 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
2020/05/01 PHP
又一个小巧的图片预加载类
2007/05/05 Javascript
asm.js使用示例代码
2013/11/28 Javascript
详解jQuery中的元素的属性和相关操作
2015/08/14 Javascript
jQuery简单实现title提示效果示例
2016/08/01 Javascript
Jquery表单验证失败后不提交的解决方法
2016/10/18 Javascript
深入讲解xhr(XMLHttpRequest)/jsonp请求之abort
2017/07/26 Javascript
vue 运用mock数据的示例代码
2017/11/07 Javascript
JS实现的tab切换并显示相应内容模块功能示例
2019/08/03 Javascript
wepy--用vantUI 实现上弹列表并选择相应的值操作
2020/11/03 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
Python中的作用域规则详解
2015/01/30 Python
Python实现TCP协议下的端口映射功能的脚本程序示例
2016/06/14 Python
解决python使用open打开文件中文乱码的问题
2017/12/29 Python
python3爬取淘宝信息代码分析
2018/02/10 Python
python字符串和常用数据结构知识总结
2019/05/21 Python
Python 抓取数据存储到Redis中的操作
2020/07/16 Python
BeautifulSoup获取指定class样式的div的实现
2020/12/07 Python
HTML5样式控制示例代码
2013/11/27 HTML / CSS
美国皮靴公司自1863年:The Frye Company
2016/11/30 全球购物
GIVENCHY纪梵希官方旗舰店:高定彩妆与贵族护肤品
2018/04/16 全球购物
英国鹦鹉店:Parrot Essentials
2018/12/03 全球购物
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
工作失职检讨书范文
2014/01/16 职场文书
文明家庭先进事迹材
2014/01/27 职场文书
2015年乡镇工作总结范文
2015/04/22 职场文书
法院答辩状格式
2015/05/22 职场文书