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实现的登录和操作开心网脚本分享
Jul 09 Python
django 多数据库配置教程
May 30 Python
python numpy 一维数组转变为多维数组的实例
Jul 02 Python
利用python循环创建多个文件的方法
Oct 25 Python
对python自动生成接口测试的示例讲解
Nov 30 Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
Aug 27 Python
PYTHON发送邮件YAGMAIL的简单实现解析
Oct 28 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
Feb 23 Python
简单了解python调用其他脚本方法实例
Mar 26 Python
python3实现简单飞机大战
Nov 29 Python
用python发送微信消息
Dec 21 Python
python基于tkinter制作m3u8视频下载工具
Apr 24 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.ini修改php上传文件大小限制的方法详解
2013/06/17 PHP
PHP统计目录大小的自定义函数分享
2014/11/18 PHP
Laravel框架控制器的middleware中间件用法分析
2019/09/30 PHP
js限制文本框为整数和货币的函数代码
2010/10/13 Javascript
javascript数组操作(创建、元素删除、数组的拷贝)
2014/04/07 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
2016/05/20 Javascript
星期几的不同脚本写法(推荐)
2016/06/01 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
2017/04/20 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
2017/05/02 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
jQuery选择器_动力节点Java学院整理
2017/07/05 jQuery
opencv 识别微信登录验证滑动块位置
2018/08/07 Javascript
layui之table checkbox初始化时选中对应选项的方法
2019/09/02 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
2020/11/19 Vue.js
[04:55]完美世界副总裁蔡玮:DOTA2的自由、公平与信任
2013/12/18 DOTA
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
对python 树状嵌套结构的实现思路详解
2019/08/09 Python
基于Django框架的权限组件rbac实例讲解
2019/08/31 Python
详解Python 中sys.stdin.readline()的用法
2019/09/12 Python
Python实现实时数据采集新型冠状病毒数据实例
2020/02/04 Python
如何使用python socket模块实现简单的文件下载
2020/09/04 Python
CSS3的column-fill属性对齐列内容高度的用法详解
2016/07/01 HTML / CSS
canvas之万花筒效果的简单实现(推荐)
2016/08/16 HTML / CSS
HTML5 canvas画矩形时出现边框样式不一致的解决方法
2013/10/14 HTML / CSS
深入解析HTML5 Canvas控制图形矩阵变换的方法
2016/03/24 HTML / CSS
BIBLOO波兰:捷克的一家在线服装店
2018/03/09 全球购物
什么是Web Service?
2012/07/25 面试题
体育专业学生自我评价范文
2014/01/17 职场文书
财产保全担保书范文
2014/04/01 职场文书
给校长的建议书500字
2014/05/15 职场文书
离婚案件上诉状
2015/05/23 职场文书
党员心得体会范文2016
2016/01/23 职场文书
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
2021/04/01 PHP
七个Python必备的GUI库
2021/04/27 Python
解决Mysql多行子查询的使用及空值问题
2022/01/22 MySQL