没有合适的资源?快使用搜索试试~ 我知道了~
python中的多线程与多进程及其区别(csdn)————程序.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 22 浏览量
2021-12-03
10:46:41
上传
评论
收藏 286KB PDF 举报
温馨提示
试读
16页
python中的多线程与多进程及其区别(csdn)————程序
资源推荐
资源详情
资源评论
目录
引言
1 多进程
1.1 fork 方式
1.2 multiprocessing 方式
1.3 Pool 方式
1.4 进程间通信
1 Queue
2 Pipe
2 多线程
2.1 threading
2.2 线程同步
2.3 死锁和递归锁
1 死锁
2 递归锁
引言
对于新手来说,首先要理解线程的概念以及为什么需要采用多线程进行编程。
什么是线程呢?网上一般都是这样定义的:线程(thread)是操作系统能够进行
运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。是不
是听的一脸懵,我觉得这样的定义纯粹是自说自话,新手看完了一脸懵逼。那
么我们可以用白话进行解释一下:
• 假如你经营一家物业管理公司。最初,业务量很小,每件事都需要你亲
力亲为,给隔壁老王家修完暖气管道,立马再去老李家换灯泡——这叫
单线程,所有的工作都得顺序执行;
• 后来业务拓展了,你雇佣了几个工人,这样你的物业公司就可以同时为
多位客户提供服务了——这叫多线程,你是主线程;
• 工人们使用的工具是物业管理公司提供的,大家共享——这叫多线程资
源共享;
• 工人们在工作中都需要管钳,可是管钳只有一把——这叫冲突。
• 解决冲突的办法有很多,比如排队、等同事用完后的电话通知等——这
叫线程同步;
• 业务不忙的时候,你就在办公室喝喝茶,下班时间一到,你群发微信,
所有的工人不管手头上的工作是否完成,都立马撂下工具走人。因此如
果有必要,需要避免不要在工人正忙着的时候发送下班的通知——这叫
线程守护属性设置和管理;
• 再后来,你的公司是规模扩大了,同时为很多生活社区服务,你在每个
生活社区设置了分公司,分公司由分公司经理管理,运营机制和你的总
公司几乎一模一样——这叫多进程,总公司叫主进程,分公司叫子进
程;
• 总公司以及各个分公司之间,工具都是独立的,不能借用、混用——这
叫进程间不能共享资源。各个分公司之间可以通过专线电话联系——这
叫管道。各个分公司之间还可以通过公司公告栏交换信息——这叫共享
内存;
• 分公司可以跟着总公司一起下班,也可以把当天的工作全部做完之后再
下班——这叫守护进程设置。
1 多进程
python 实现多进程的方法主要有两种:os 模块下的 fork 方法、
multiprocessing 模块。前者只适用于 Unix/Linux 系统,后者则是跨平台的实
现方式。
1.1 fork 方式
import os
# 注意,fork 函数,只在 Unix/Linux/Mac 上运行,windows 不可以
pid = os.fork()
if pid == 0:
print('哈哈 1')
else:
print('哈哈 2')
注意:fork()函数只能在 Unix/Linux/Mac 上面运行,不可以在 Windows 上面
运行。
说明:
• 程序执行到 os.fork()时,操作系统会创建一个新的进程(子进程),
然后复制父进程的所有信息到子进程中;
• 然后父进程和子进程都会从 fork()函数中得到一个返回值,在子进程中
这个值一定是 0,而父进程中是子进程的 id 号。
在 Unix/Linux 操作系统中,提供了一个 fork()系统函数,它非常特殊。普通
的函数调用,调用一次,返回一次,但是 fork()调用一次,返回两次,因为操
作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后,分
别在父进程和子进程内返回。子进程永远返回 0,而父进程返回子进程的 ID。
这样做的理由是,一个父进程可以 fork 出很多子进程,所以,父进程要记下每
个子进程的 ID,而子进程只需要调用 getppid()就可以拿到父进程的 ID。我们
可以通过 os.getpid()获取当前进程 ID,通过 os.getppid()获取父进程 ID。
那么,父子进程之间的执行有顺序吗?答案是没有!这完全取决于操作系统的
调度算法。
而多次 fork()就会产生一个树的结构:
剩余15页未读,继续阅读
资源评论
一诺网络技术
- 粉丝: 0
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功