5.1.2 网络编程进阶---开启子进程的两种方式,进程之间内存空间是相互隔离的...
当主进程开启子进程后,主进程会与子进程并行执行。当主进程执行后不会立马结束进程,而是会等子进程结束才结束,好去清理僵尸子进程(给子进程收尸)。
进程之间内存是相互隔离的。当创建子进程时,会把父进程的内存空间拷贝一份到子进程,子进程的改变不会影响主进程的内存空间。
但进程之间的IO是共享的,可以同时操作同一个文件或终端。
第一种方式:
from multiprocessing import Processimport time def task(name): print('%s is running' % name) time.sleep(3) print('%s is done' % name) if __name__ == '__main__': p = Process(target=task, kwargs={'name': '子进程1'}) # p = Process(target=task, args=('子进程1',)) p.start() # 仅仅只是给操作系统发送了一个信号,然后继续往下执行,不会等待子进程执行完成。但是会等子进程结束后,能结束主进程。 print('主') #会执行子进程执行结束后,才结束自己进程。 # 输出结果:# 主# 子进程1 is running# 子进程1 is done 第二种方式: 继承的方式
from multiprocessing import Processimport time class MyProcess(Process): # 继承Process类 def __init__(self, name): super().__init__() self.name = name def run(self): # 必须重写run方法 print('subprocess starting %s' % self.name) time.sleep(3) print('end subprocess %s' % self.name) if __name__ == '__main__': p = MyProcess('xxx') p.start() # start自动绑定到run方法 print('主线程') # 输出结果:# 主线程# subprocess starting xxx# end subprocess xxx 进程之间,内存空间是相互隔离的:
from multiprocessing import Processn = 100 # 在windows系统中应该把全局变量定义在if __name__ == '__main__'之上就可以了def work():global nn = 0print('子进程内: ', n)if __name__ == '__main__':p = Process(target=work)p.start()p.join()print('主进程内: ', n)
输出:
子进程内: 0
主进程内: 100
转载于:https://www.cnblogs.com/beallaliu/p/9189845.html
5.1.2 网络编程进阶---开启子进程的两种方式,进程之间内存空间是相互隔离的...相关推荐
- 开启子进程的两种方式、进程间内存空间隔离、进程对象的方法或属性详解
1.操作系统(推荐查看书籍:现代操作系统) 操作系统是位于计算机硬件与软件之间的控制程序 作用: 1.将硬件的复杂操作封装成简单的接口,给用户或者应用程序使用 ...
- 进程理论以及开启子进程的两种方式
进程理论(book:现代操作系统) 为何开启子进程需要放在main下面:因为运行到start他会向操作系统发起启动子进程的信号,然后操作系统会把整个代码块执行下,找到子进程要执行的任务, 代码运行到最 ...
- 开启子进程的两种方式,孤儿进程与僵尸进程,守护进程,互斥锁,IPC机制,生产者与消费者模型...
开启子进程的两种方式 # # # 方式一: # from multiprocessing import Process # import time # # def task(x): # print(' ...
- linux 僵尸进程deffunc,多进程-开启子进程的两种方式,查看进程的pid与ppid,僵尸进程与孤儿进程...
一.开启子进程的两种方式 方式一: # 方式一: from multiprocessing import Process import time def task(name): print(" ...
- 7 并发编程-(线程)-开启线程的两种方式
thread/英 /θred/ 美 /θrɛd/ 线程 1.threading模块介绍 multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性,因而不再 ...
- python 开启子进程的两种方式
进程: 是程序执行过程 启动进程,用某种方式开启子进程,帮咱们把咱们这个进程里的某一个任务并发执行以下 from multiprocessing import Process import timed ...
- 学习笔记(16):Python网络编程并发编程-开启子进程的两种方式
立即学习:https://edu.csdn.net/course/play/24458/296424?utm_source=blogtoedu #方式一:使用python内置模块multiproces ...
- 开启子进程的两种方式
方式一 from multiprocessing import Process import timedef task(name):print('%s is running' % name)time. ...
- Python 35 线程(1)线程理论、开启线程的两种方式
一:线程理论 1 什么是线程 进程其实一个资源单位,而进程内的线程才是cpu上的执行单位 线程其实指的就是代码的执行过程 2 为何要用线程 线程vs进程 1. 同一进程下的多个线程共享 ...
最新文章
- JVM - 结合代码示例彻底搞懂Java内存区域_线程栈 | 本地方法栈 | 程序计数器
- Codeforces Round #215 (Div. 2) D. Sereja ans Anagrams
- cookie中转注入
- request.getcontextPath() 详解(转)
- python3 荣誉证书(奖状)批量打印
- 2022华为机试真题 C++ 实现【最大股票收益】
- 如何爬取B站视频的封面图片
- SkeyeVSS综合安防监控Onvif、RTSP、GB28181视频云解决方案之服务器系统硬件资源管理
- 使用R进行pubmed爬虫
- 公司MES项目现场落地实施总结
- php adodb smarty,ADODB结合SMARTY使用~超级强
- 计算机科学英语 --- 持续更新中(2018/10/18)
- 【无人机】【2017.06】无人机应用于风力涡轮转子叶片超声无损检测的可行性研究
- win10电脑wifi连不上,一直显示正在检测网络要求
- 骂谷歌,怼百度,批腾讯,吴军为何DISS互联网公司没得怕的?
- win11疑难解答怎么进
- 思否官方祝各位社区开发者 2019 春节快乐
- 2016年第一季度总结
- 微信小程序的开发之城市json数据
- 常用聊天/传输工具的协议及端口 腾讯QQ/电驴/淘宝旺旺
热门文章
- 计算机怎么查文件打印记录表,win10系统查看打印机打印历史记录的设置教程
- 方德系统装exe文件_国产处理器+自主OS完美运行exe程序?英特尔认为有侵权嫌疑...
- vue2.6.11版本源码运行报错问题处理
- 存储过程中的关键字--AS、GO的含义
- VS语音信号处理(2) C语言分段读取WAV语音文件语音数据
- html+js+canvas实现画板涂画功能和vue+canvas实现画板涂画功能
- dice系数 交叉熵_ACL2020 | 香侬科技提出用Dice Loss缓解数据集数据不平衡问题
- unity——Survival Shooter:攻击敌人
- 此前小编为大家介绍了女人吃鸡蛋的好处,想必大家对鸡蛋这种蛋类有了更多的了解。今天小编为大家介绍另一种蛋类——鸭蛋。鸭蛋又名鸭卵,是人们经常食用的一种蛋类食品,与鸡蛋营养相当,吃它的好处众多。那么女人吃
- 快速掌握Charles抓包工具 [MP4] (115M)