当主进程开启子进程后,主进程会与子进程并行执行。当主进程执行后不会立马结束进程,而是会等子进程结束才结束,好去清理僵尸子进程(给子进程收尸)。

进程之间内存是相互隔离的。当创建子进程时,会把父进程的内存空间拷贝一份到子进程,子进程的改变不会影响主进程的内存空间。

但进程之间的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.操作系统(推荐查看书籍:现代操作系统)     操作系统是位于计算机硬件与软件之间的控制程序     作用:         1.将硬件的复杂操作封装成简单的接口,给用户或者应用程序使用      ...

  2. 进程理论以及开启子进程的两种方式

    进程理论(book:现代操作系统) 为何开启子进程需要放在main下面:因为运行到start他会向操作系统发起启动子进程的信号,然后操作系统会把整个代码块执行下,找到子进程要执行的任务, 代码运行到最 ...

  3. 开启子进程的两种方式,孤儿进程与僵尸进程,守护进程,互斥锁,IPC机制,生产者与消费者模型...

    开启子进程的两种方式 # # # 方式一: # from multiprocessing import Process # import time # # def task(x): # print(' ...

  4. linux 僵尸进程deffunc,多进程-开启子进程的两种方式,查看进程的pid与ppid,僵尸进程与孤儿进程...

    一.开启子进程的两种方式 方式一: # 方式一: from multiprocessing import Process import time def task(name): print(" ...

  5. 7 并发编程-(线程)-开启线程的两种方式

    thread/英 /θred/ 美 /θrɛd/  线程 1.threading模块介绍 multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性,因而不再 ...

  6. python 开启子进程的两种方式

    进程: 是程序执行过程 启动进程,用某种方式开启子进程,帮咱们把咱们这个进程里的某一个任务并发执行以下 from multiprocessing import Process import timed ...

  7. 学习笔记(16):Python网络编程并发编程-开启子进程的两种方式

    立即学习:https://edu.csdn.net/course/play/24458/296424?utm_source=blogtoedu #方式一:使用python内置模块multiproces ...

  8. 开启子进程的两种方式

    方式一 from multiprocessing import Process import timedef task(name):print('%s is running' % name)time. ...

  9. Python 35 线程(1)线程理论、开启线程的两种方式

    一:线程理论 1 什么是线程 进程其实一个资源单位,而进程内的线程才是cpu上的执行单位 线程其实指的就是代码的执行过程 2 为何要用线程    线程vs进程      1. 同一进程下的多个线程共享 ...

最新文章

  1. JVM - 结合代码示例彻底搞懂Java内存区域_线程栈 | 本地方法栈 | 程序计数器
  2. Codeforces Round #215 (Div. 2) D. Sereja ans Anagrams
  3. cookie中转注入
  4. request.getcontextPath() 详解(转)
  5. python3 荣誉证书(奖状)批量打印
  6. 2022华为机试真题 C++ 实现【最大股票收益】
  7. 如何爬取B站视频的封面图片
  8. SkeyeVSS综合安防监控Onvif、RTSP、GB28181视频云解决方案之服务器系统硬件资源管理
  9. 使用R进行pubmed爬虫
  10. 公司MES项目现场落地实施总结
  11. php adodb smarty,ADODB结合SMARTY使用~超级强
  12. 计算机科学英语 --- 持续更新中(2018/10/18)
  13. 【无人机】【2017.06】无人机应用于风力涡轮转子叶片超声无损检测的可行性研究
  14. win10电脑wifi连不上,一直显示正在检测网络要求
  15. 骂谷歌,怼百度,批腾讯,吴军为何DISS互联网公司没得怕的?
  16. win11疑难解答怎么进
  17. 思否官方祝各位社区开发者 2019 春节快乐
  18. 2016年第一季度总结
  19. 微信小程序的开发之城市json数据
  20. 常用聊天/传输工具的协议及端口 腾讯QQ/电驴/淘宝旺旺

热门文章

  1. 计算机怎么查文件打印记录表,win10系统查看打印机打印历史记录的设置教程
  2. 方德系统装exe文件_国产处理器+自主OS完美运行exe程序?英特尔认为有侵权嫌疑...
  3. vue2.6.11版本源码运行报错问题处理
  4. 存储过程中的关键字--AS、GO的含义
  5. VS语音信号处理(2) C语言分段读取WAV语音文件语音数据
  6. html+js+canvas实现画板涂画功能和vue+canvas实现画板涂画功能
  7. dice系数 交叉熵_ACL2020 | 香侬科技提出用Dice Loss缓解数据集数据不平衡问题
  8. unity——Survival Shooter:攻击敌人
  9. 此前小编为大家介绍了女人吃鸡蛋的好处,想必大家对鸡蛋这种蛋类有了更多的了解。今天小编为大家介绍另一种蛋类——鸭蛋。鸭蛋又名鸭卵,是人们经常食用的一种蛋类食品,与鸡蛋营养相当,吃它的好处众多。那么女人吃
  10. 快速掌握Charles抓包工具 [MP4] (115M)