线程与进程的一些应用
#分析:
我们有四个任务需要处理,处理方式肯定是要玩出并发的效果,解决方案可以是:
方案一:开启四个进程
方案二:一个进程下,开启四个线程#单核情况下,分析结果: 如果四个任务是计算密集型,没有多核来并行计算,方案一徒增了创建进程的开销,方案二胜如果四个任务是I/O密集型,方案一创建进程的开销大,且进程的切换速度远不如线程,方案二胜#多核情况下,分析结果:如果四个任务是计算密集型,多核意味着并行计算,在python中一个进程中同一时刻只有一个线程执行用不上多核,方案一胜如果四个任务是I/O密集型,再多的核也解决不了I/O问题,方案二胜#结论:现在的计算机基本上都是多核,python对于计算密集型的任务开多线程的效率并不能带来多大性能上的提升,甚至不如串行(没有大量切换),但是,对于IO密集型的任务效率还是有显著提升的。
1 from multiprocessing import Process 2 from threading import Thread 3 import threading 4 import os,time 5 def work(): 6 time.sleep(2) 7 print('===>') 8 9 if __name__ == '__main__': 10 l=[] 11 print(os.cpu_count()) #本机为4核 12 start=time.time() 13 for i in range(400): 14 # p=Process(target=work) #耗时12s多,大部分时间耗费在创建进程上 15 p=Thread(target=work) #耗时2s多 16 l.append(p) 17 p.start() 18 for p in l: 19 p.join() 20 stop=time.time() 21 print('run time is %s' %(stop-start))
I/O密集型:多线程效率高
1 from multiprocessing import Process 2 from threading import Thread 3 import os,time 4 def work(): 5 res=0 6 for i in range(100000000): 7 res*=i 8 9 10 if __name__ == '__main__': 11 l=[] 12 print(os.cpu_count()) #本机为4核 13 start=time.time() 14 for i in range(4): 15 p=Process(target=work) #耗时5s多 16 p=Thread(target=work) #耗时18s多 17 l.append(p) 18 p.start() 19 for p in l: 20 p.join() 21 stop=time.time() 22 print('run time is %s' %(stop-start))
计算密集型:多进程效率高
转载于:https://www.cnblogs.com/52-qq/p/7453125.html
线程与进程的一些应用相关推荐
- iOS开发 - 线程与进程的认识与理解
进程: 进程是指在系统中正在运行的一个应用程序,比如同时打开微信和Xcode,系统会分别启动2个进程; 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内; 线程: 一个进程要想执行任务 ...
- Java多线程001——一图读懂线程与进程
本博客 猫叔的博客,转载请申明出处 前言 本系列将由浅入深,学习Java并发多线程. 一图读懂线程与进程 1.一个进程可以包含一个或多个线程.(其实你经常听到"多线程",没有听过& ...
- 为什么校招面试中总被问“线程与进程的区别”?我该如何回答?
作者 | 宇宙之一粟 责编 | 徐威龙 出品 | AI 科技大本营(rgznai100) 进程与线程?(Process vs. Thread?) 面试官(正襟危坐中):给我说说"线程&quo ...
- 进程、线程、进程池、进程三态、同步、异步、并发、并行、串行
点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 来源:cnblogs.com/songhaixing/p/1 ...
- 写给小白看的线程和进程,高手勿入
计算机的核心是CPU,它承担了计算机的所有计算任务,CPU就像一个工厂,时刻在运行着,而操作系统管理着计算机,负责任务的调度.资源的分配和管理. 图片来源于网络 进程和线程都是计算机操作系统中的基本概 ...
- php 进程 线程,php进程还是线程
php编程常见的进程和线程 一.什么是进程 (推荐学习:PHP视频教程) 进程是程序执行是的一个实例,进程能够分配给cpu和内存等资源.进程一般包括指令集和系统资源,其中指令集就是你的代码,系统资源就 ...
- 线程VS进程,多线程VS多进程,并行VS并发,单核cpuVS多核cpu
目录 概论 进程VS线程 并发VS并行 多线程VS多进程 总结 概论 程序是为完成特定任务.用某种语言编写的组指令的集合.即指一段静态的代码,静态对象. 进程是程序的次执行过程, 或是正在运行的 一个 ...
- 编程思想之多线程与多进程——以操作系统的角度述说线程与进程
原文:http://blog.csdn.net/luoweifu/article/details/46595285 作者:luoweifu 转载请标名出处 什么是线程 什么是线程?线程与进程与有什 ...
- iOS进阶之底层原理-线程与进程、gcd
线程与进程 线程的定义 线程是进程的基本单位,一个进程的所有任务都在线程中执行 进程要想执行任务,必须的有线程,进程至少要有一条线程 程序启动默认会开启一条线程,也就是我们的主线程 进程的定义 进程是 ...
- python 协程、进程、线程_Python进程、线程、协程之间的关系
一.从操作系统角度 操作系统处理任务, 调度单位是 进程 和 线程 . 1.进程: 表示一个程序的执行活动 (打开程序.读写程序数据.关闭程序) 2.线程: 执行某个程序时, 该进程调度的最小执行单位 ...
最新文章
- javascript里的prototype
- 【hadoop2.6.0】利用Hadoop的 Java API
- Premiere Pro CC2019安装资料及安装教程
- spyder 护眼背景
- linux输出重定向
- Robocopy用法
- 非常友好的PHP后台模板
- Java面试题及答案整理(2021最新版)
- VMware 镜像安装
- 算法导论练习 3.1 Asymptotic notation
- 电脑wifi密码查看
- C++类内初始值的初始化形式
- 计算机主机电池,台式机主板电池没电不换有什么影响?教你更换电脑主板电池的方法...
- java 最小公倍数_Java求最大公约数和最小公倍数
- 基于RTMP协议的Flash流媒体网页直播播放器
- mac80211/cfg80211模块编译安装
- php读取word文件并解析图片,PHP读取office word文档内容及图片
- next. js_Next.js添加到您的应用程序中的图标
- HTML5期末大作业:篮球网站设计(6个页面) HTML+CSS+JavaScript
- Android Studio 安装和配置genymotion模拟器过程中所遇到的问题
热门文章
- 华为 泰山 服务器 操作系统安装,华为Taishan服务器安装CentOS7操作系统
- java putall实现,Java EnumMap putAll()
- mc服务器音乐文件夹在哪,添加自定义音乐图文教程 我的世界怎么添加音乐
- 多模块的maven项目,执行 install/deploy 指令时,排除指定module
- ie导出excel是html文件路径,导出HTML到Excel中的IE11 - “拒绝访问”
- access导入链接快还是导入表快_Go 语言设计哲学之十三:理解包导入路径的含义...
- php deprecated是什么意思,解决:PHP Deprecated: Comments starting with '#' are deprecated in ……...
- nslang oracle_RAC11g+DG 高可用容灾方案部署
- 从零开始搭建spring-cloud(1) ----eureka
- Python实现的导弹跟踪算法,燃!