第九篇 并发(进程和线程)

Python里执行并发有进程和线程两个,分布使用 threading 和multiprocessing 两个库,一般用的是这两个库里的Thread和Process

from threading import Thread   # 线程 : 同时运行from multiprocessing import Process  # 进程

进程和线程的使用场景:

1. 一般在有大量的数据(耗时)操作的时候,会用到线程和进程

2.python里要优先用进程,因为Python里的线程有个自带的bug,全局解释器锁

示例1:有大猫和小猫睡觉的两个模拟耗时的操作,如果不用并发,执行效果就是从上到下顺序 串行执行的

from threading import Thread   # 线程 : 同时运行
import time, random# 模拟耗时操作:大猫和小猫睡觉
def daMaoSleep(n):print("大猫开始睡觉了,它要睡{}秒".format(n) )time.sleep(n)print("现在大猫睡醒了")def xiaoMaoSleep(n):print("小猫开始睡觉了,它要睡{}秒".format(n) )time.sleep(n)print("现在小猫睡醒了")if __name__ == '__main__':# 不适用线程和进程,是顺序串行的n_da = random.randint(3,5)n_xiao = random.randint(3,6)# 使用线程库进行并行,注意target是函数名,args是参数,参数必须是元组# target=传参是要运行的函数,args=(n,) args是个元组,如果只有一个参数,要带逗号的# 使用线程库进行并行,注意target是函数名,args是参数,参数必须是元组# 执行大猫睡觉thread = Thread(target=daMaoSleep,args=(n_da,))thread.start()# 执行小猫睡觉thread = Thread(target=xiaoMaoSleep,args=(n_xiao,))thread.start()# 输出
大猫开始睡觉了,它要睡4秒
小猫开始睡觉了,它要睡3秒
现在小猫睡醒了
现在大猫睡醒了

 

示例2:如果想让大猫和小猫同时开始睡觉,怎么操作呢?

这里用线程的方式实现并发演示

from multiprocessing import Process  # 进程
import time, random# 模拟耗时操作:大猫和小猫睡觉
def daMaoSleep(n):print("大猫开始睡觉了,它要睡{}秒".format(n) )time.sleep(n)print("现在大猫睡醒了")def xiaoMaoSleep(n):print("小猫开始睡觉了,它要睡{}秒".format(n) )time.sleep(n)print("现在小猫睡醒了")if __name__ == '__main__':n_da = random.randint(3,5)n_xiao = random.randint(3,6)# 使用进程库进行并行,注意target是函数名,args是参数,参数必须是元组# target=传参是要运行的函数,args=(n,) args是个元组,如果只有一个参数,要带逗号的# 使用进程库进行并行,注意target是函数名,args是参数,参数必须是元组# 执行大猫睡觉process = Process(target=daMaoSleep,args=(n_da,))process.start()# 执行小猫睡觉process = Process(target=xiaoMaoSleep,args=(n_xiao,))process.start()# 输出
大猫开始睡觉了,它要睡4秒
小猫开始睡觉了,它要睡3秒
现在小猫睡醒了
现在大猫睡醒了

注意避免踩坑:进程和线程一定要写在 if __name__ == '__main__' 里面的,否则会报错

进程与线程的区别:

什么是进程,什么是线程

系统要做一件事,运行一个任务,所有运行的任务通常就是一个程序;

每个运行中的程序就是一个进程,这一点在任务管理器上面可以形象的看到。

当一个程序运行时,内部可能会包含多个顺序执行流,每个顺序执行流就是一个线程。

 

关于进程的特性

独立性:进程是系统中独立存在的实体,它可以拥有自己独立的资源,每个进程都拥有自己私有的地址空间。在没有经过进程本身运行的情况下是不能访问其中的内容的。

动态性:进程与程序的区别在于,程序是静态的,进程是动态的。程序只是一个静态的指令集合,而进程是一个正在系统中运行的指令集合。有了时间的概念,如生命周期;

并发性:进程之间,交替着执行。

 

线程,一个顺序执行流;

它是进程的组成部分,一个进程可以有多个线程。

 

关于线程的特性,或是它的优势

1、进程之间不能共享内存,单线程之间共享内存非常的容易

2、系统创建进程需要为该进程重新分配系统资源,但创建线程的代价很小。因此多线程的实现多任务并发比多进程实现并发的效率高

3、java语言内置多线程功能支持,而不是单纯的作为底层操作系统的调度方式

 

总结:

一个程序运行至少一个进程,一个进程里面至少包含一个线程,线程是进程的组成部分。

线程相对于进程而言,很强大了,做到了资源的共享,资源的损耗降低,人为的手工控制程序的运行。

 

多进程通信的方式有哪些?
1. 共享内存
2. 信号
3. 信号量
4. 管道
5. socket通信

多线程的通信方式有哪些?
因为线程运作在进程里里面,所以多线程的通信方式也就是多线程的通信方式

 

不过,总的来说,目前进程和线程已经过时了,当前主流的处理方式都用消息队列实现

 

 

 

转载于:https://www.cnblogs.com/victorm/p/11326366.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/386234.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网易严选Java开发三面面经:java读文件内容

一、前言 Redis 提供了5种数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合),理解每种数据类型的特点对于…

网易严选Java开发三面面经:mysql索引面试题

写在前面 最近,很多小伙伴出去面试都被问到了Spring问题,关于Spring,细节点很多,面试官也非常喜欢问一些很细节的技术点。所以,在 Spring 专题中,我们尽量把Spring的每个技术细节说清楚,将透彻…

网易严选Java开发三面面经:南京黑马java培训怎么样

个人背景 如标题所示,我的个人背景非常简单,Java开发经验1年半,学历普通,2本本科毕业,毕业后出来就一直在Crud,在公司每天重复的工作对我的技术提升并没有什么帮助,但小镇出来的我也深知自我努…

网易架构师深入讲解Java开发!BAT等大厂必问技术面试题

前言 MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单、优雅。本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询实例,深入代码,来探究MyBa…

IOS 消息转发

最近在看消息转发的资料&#xff0c;发现大部分都是理论知识&#xff0c;很少有完整的代码。现在以代码的形式形象的解释一下&#xff1a; 用Xcode创建一个工程 1.正常方法调用 创建一个类Person 代码如下 Person.h代码如下&#xff1a; #import <Foundation/Foundation.h&g…

网易资深Java架构师:java数组对象转为list集合

前言 现在刷抖音经常可以看到一些老外街坊&#xff0c;问他们最想把什么带回自己的国家&#xff0c;我听过很多的回答都是&#xff1a;淘宝&#xff0c;支付宝&#xff0c;美食&#xff0c;微信&#xff0c;外卖&#xff0c;高铁等等。 确实如此&#xff0c;随着国家的快速发…

夯实基础——P2084 进制转换

题目链接&#xff1a;https://www.luogu.org/problem/P2084 P2084 进制转换 题目背景 无 题目描述 今天小明学会了进制转换&#xff0c;比如&#xff08;10101&#xff09;2 &#xff0c;那么它的十进制表示的式子就是 : 1*2^40*2^31*2^20*2^11*2^0&#xff0c; 那么请你编程实…

网易资深Java架构师:java方法的定义和使用

前言 今年因为这个疫情&#xff0c;感觉这是从工作以来过的最久的一个年了&#xff0c;在家呆的时间不是一般的久&#xff0c;算一算有好几个月呢&#xff01;我大概是3月底快4月了才出门&#xff0c;投了超多的简历&#xff0c;天天面试面试面试面试面试面试面试…庆幸的是还…

PHP----学生管理系统

闲来无事花费两天时间写了份简易版的学生管理系统 源码地址:https://www.cnblogs.com/post/ReadAuth?blogId509327&PostId11333758&url%2Fbyczyz%2Fprotected%2Fp%2F11333758.html 转载于:https://www.cnblogs.com/byczyz/p/11333760.html

网易资深Java架构师:jdkjrejvm的区别和联系

前言 作为同时具备高性能、高可靠和高可扩展性的典型键值数据库&#xff0c;Redis不仅功能强大&#xff0c;而且稳定&#xff0c;理所当然地成为了大型互联网公司的首选。 众多大厂在招聘的时候&#xff0c;不仅会要求面试者能简单地使用Redis&#xff0c;还要能深入地理解底…

深度学习之开端备注

Adagrad //适合稀疏样本 RMSprop//借鉴Adagrad的思想&#xff0c;改进使得不会出现学习率越来越低的问题 由此可见Adadelta既不需要输入学习率等参数&#xff0c;而且表现得非常好&#xff01;&#xff01;但是我试了几次&#xff0c;这个优化器效果极差&#xff01;&#xff0…

网易资深Java架构师:疫情对java行业的影响分析

前言 在实际开发&#xff0c;Redis使用会频繁&#xff0c;那么在使用过程中我们该如何正确抉择数据类型呢&#xff1f;哪些场景下适用哪些数据类型。而且在面试中也很常会被面试官问到Redis数据结构方面的问题&#xff1a; Redis为什么快呢&#xff1f;为什么查询操作会变慢了…

ListView与.FindControl()方法的简单练习 #2 -- ItemUpdting事件中抓取「修改后」的值

原文出處 http://www.dotblogs.com.tw/mis2000lab/archive/2013/06/24/listview_itemupdating_findcontrol_20130624.aspx ListView与.FindControl()方法的简单练习 #2 -- ItemUpdting事件中抓取「修改后」的值 本文跟上一篇文章有关连&#xff0c;请依照顺序来练习&#xff1…

美团java研发岗二面:java静态方法存储在哪个区

思维导图 前言 在很多时候&#xff0c;我们都可以在各种框架应用中看到ZooKeeper的身影&#xff0c;比如Kafka中间件&#xff0c;Dubbo框架&#xff0c;Hadoop等等。为什么到处都看到ZooKeeper&#xff1f; 一、 前些年&#xff0c;互联网行业里对架构师这个岗位的标准还不是…

[学习之道] 修福不修慧,大象披璎珞; 修慧不修福,罗汉托空钵 (学习写程序,只靠补习上课吗?)...

这是我的备份&#xff0c;原文请看 http://www.dotblogs.com.tw/mis2000lab/archive/2014/09/17/learning-and_do-it_20140917.aspx [学习之道] 修福不修慧&#xff0c;大象披璎珞&#xff1b; 修慧不修福&#xff0c;罗汉托空钵 (学习写程序&#xff0c;只靠补习上课吗&#…

阿里P8亲自教你!mysql列转行

前言 今日博主听闻&#xff0c;现在很多培训出来的应届生薪资都赶上了摸爬滚打两三年的朋友&#xff0c;讲道理&#xff0c;这说不过去啊 作为同行来说&#xff0c;这个行业发展很快&#xff0c;技术更新很快&#xff0c;淘汰也很快&#xff0c;千万不要再找借口了&#xff0…

同步、异步、多线程

1、首先明确一点&#xff0c;对于单核CPU&#xff0c;任意一个时刻只有一个线程在运行。那么既然这样&#xff0c;多线程还有什么意义呢&#xff1f; 举例来说&#xff0c;现在只有一个人&#xff0c;要做好几个任务。单线程就是&#xff0c;任务一个一个地做&#xff0c;必须做…

阿里P8亲自教你!熬夜整理华为最新Java笔试题

前言 Mysql的锁机制确实非常重要&#xff0c;所以在这里做一个全面的总结整理&#xff0c;便于以后的查阅&#xff0c;也分享给大家。 Mysql的锁机制还是有点难理解的&#xff0c;所以这篇文章采用图文结合的方式讲解难点&#xff0c;帮助大家理解&#xff0c;讲解的主要内容…

JSP基础笔记

/** #####这部分也是笔记,用于记录JSP的相关内容* ###怎么用JSP###指令的写法* <% 指令名字%>* *### page指令 * language > 表明jsp页面中可以写java代码 * contentType > 其实即使说这个文件是什么类型&#xff0c;告诉浏览器我是什么内容类型&#xff0c;以及使…

阿里P8亲自讲解!javawhile循环语句用法

前言 作为一个已经毕业的计算机专业学长&#xff0c;其实几年大学走来还是挺感慨万千的。&#xff08;说明一下&#xff1a;一本&#xff0c;非958、211&#xff09; 老实说&#xff0c;上大学之前填志愿选专业的时候没有任何打算&#xff0c;就觉得学海熬到头了&#xff0c;向…