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绘制人人网好友关系图示例
Apr 01 Python
用Python的Django框架完成视频处理任务的教程
Apr 02 Python
Python实现全角半角字符互转的方法
Nov 28 Python
[原创]教女朋友学Python3(二)简单的输入输出及内置函数查看
Nov 30 Python
python利用sklearn包编写决策树源代码
Dec 21 Python
Python实现的银行系统模拟程序完整案例
Apr 12 Python
Python3.5文件修改操作实例分析
May 01 Python
python实现银联支付和支付宝支付接入
May 07 Python
Python 函数绘图及函数图像微分与积分
Nov 20 Python
python numpy数组复制使用实例解析
Jan 10 Python
Python基于callable函数检测对象是否可被调用
Oct 16 Python
详解基于python的图像Gabor变换及特征提取
Oct 26 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生成缩略图的代码
2011/01/12 PHP
php读取der格式证书乱码解决方法
2015/06/22 PHP
ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能
2012/02/03 Javascript
浏览器解析js生成的html出现样式问题的解决方法
2012/04/16 Javascript
jQuery.clean使用方法及思路分析
2013/01/07 Javascript
java、javascript实现附件下载示例
2014/08/14 Javascript
jQuery处理json数据返回数组和输出的方法
2015/03/11 Javascript
jQuery实现返回顶部效果的方法
2015/05/29 Javascript
Jquery实现弹性滑块滑动选择数值插件
2015/08/08 Javascript
基于VUE选择上传图片并页面显示(图片可删除)
2017/05/25 Javascript
关于TypeScript中import JSON的正确姿势详解
2017/07/25 Javascript
使用html+js+css 实现页面轮播图效果(实例讲解)
2017/09/21 Javascript
koa-router源码学习小结
2018/09/07 Javascript
JavaScript实现邮箱后缀提示功能的示例代码
2018/12/13 Javascript
JavaScript使用ul中li标签实现删除效果
2019/04/15 Javascript
Angular2实现的秒表及改良版示例
2019/05/10 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
2019/06/10 Javascript
[52:03]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第三场 1月31日
2021/03/11 DOTA
python装饰器-限制函数调用次数的方法(10s调用一次)
2018/04/21 Python
selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
2018/11/29 Python
基于Pyinstaller打包Python程序并压缩文件大小
2020/05/28 Python
python 使用建议与技巧分享(四)
2020/08/18 Python
利用CSS3实现进度条的两种姿势详解
2017/03/21 HTML / CSS
HTML5新特性 多线程(Worker SharedWorker)
2017/04/24 HTML / CSS
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
提高EJB性能都有哪些技巧
2012/03/25 面试题
优秀老员工获奖感言
2014/02/15 职场文书
护士长竞聘演讲稿
2014/04/30 职场文书
2014领导班子“四风问题”对照检查材料思想汇报(执法局)
2014/09/21 职场文书
防灾减灾标语
2014/10/07 职场文书
邀请函怎么写
2015/01/30 职场文书
布达拉宫导游词
2015/02/02 职场文书
2015年感恩节演讲稿(优选篇)
2015/03/20 职场文书
2015年电工工作总结
2015/04/10 职场文书
导游词之澳门妈祖庙
2019/12/19 职场文书
nginx location中多个if里面proxy_pass的方法
2021/03/31 Servers