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. 同一进程下的多个线程共享 ...
最新文章
- Android视图重绘,使用invalidate还是requestLayout
- [安全防护]StackGuard和StackShield
- 【企业管理】企业创造的要素
- checking for mysql_commit in -lmy_mysql2安装异常
- 剑指offer-面试题13.在O(1)时间删除链表节点
- PTA数据结构期末练习 - 单选题、判断题
- 爱情七十一课,低调恋爱
- 确认!这样学习 Python 能甩同行 10 条街!
- docker-compose 学习:部署 ThinkPHP 5 网站
- 企业从信息化角度解读智慧城市,难以根治城市病
- poi导出excel
- SQL安装过程中出现的错误解决
- linux 转换格式,linux下常见音频格式之间的转换
- Linux网卡bond
- Tomcat无法启动,报错java.lang.NoClassDefFoundError: or...
- springboot基于web的传染病信息管理系统的设计与实现毕业设计-附源码221124
- 山东超级计算机神威,世界最快超级计算机“神威·太湖之光”获得100多项应用成果...
- JS实现b站动态转发抽奖(小人数)新方案讲解
- 网站服务器选择什么操作系统,网站服务器选择哪种操作系统比较好
- 寻根究底,探讨 chi -square特征词选择方法后面的数学支持
热门文章
- JAVA面向对象的思维导图
- 2017.02.18 这一周的面试
- iuv_5g组网问题表
- u-boot之u-boot-2009.11启动过程分析
- 消防应急照明和疏散指示系统在轨道交通中的设计应用
- c++语言运算符,c++运算符
- casio计算机如何计算标准差,怎样在卡西欧5800里计算标准差和方差,不要普通计算,用里面设计好的模式,...
- 怎么起用计算机无线开关,笔记本电脑无线网卡,教您如何打开电脑无线网卡开关...
- 20230407 定时闹钟
- SpringBoot使用druid的密码加密