进程创建&僵尸进程&孤儿进程
时间:2019-09-16
本文章向大家介绍进程创建&僵尸进程&孤儿进程,主要包括进程创建&僵尸进程&孤儿进程使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、创建并开启子进程的两种方式
1.1方式一
#单个进程
from multiprocessing import Process
import time
def Text():
print('我是一个子进程')
print('我的进程开始了')
time.sleep(2)
print('我的进程结束了')
if __name__ == '__main__': #windows下必须要写这一句,不然会报错
p = Process(target = Text) #实例化产生一个对象
p.start() # 告诉操作系统我要开子进程,告诉完了这行代码就算执行完了,接着往下走,具体操作系统什么时候开子,开多长时间跟你没关系
time.sleep(5)
print('我是主进程,我要结束了')
#多个进程
from multiprocessing import Process
import time
def Text(x):
print(f'我是子进程{x}')
print(f'{x}的进程开始了')
time.sleep(2)
print(f'{x}的进程结束了')
if __name__ == '__main__': #windows下必须要写这一句,不然会报错
p1 = Process(target = Text,args=('yjy',)) #实例化产生一个对象 子进程1
p2 = Process(target = Text,args=('ypp',)) #实例化产生一个对象 子进程2
p1.start() # 告诉操作系统我要开子进程,告诉完了这行代码就算执行完了,接着往下走,具体操作系统什么时候开子,开多长时间跟你没关系
p2.start() # 告诉操作系统我要开子进程,告诉完了这行代码就算执行完了,接着往下走,具体操作系统什么时候开子,开多长时间跟你没关系
time.sleep(5)
print('我是主进程,我要结束了')
1.2 方式二
from multiprocessing import Process
import time
class Text(Process): #定义一个类,让他继承Process
def __init__(self,name): #重写__init__
super().__init__() #继承父类的__init__方法
self.name = name
def run(self): #定义一个函数
print(f'子进程的姓名为{self.name},子进程开始')
time.sleep(2)
print(f'{self.name}进程结束')
if __name__ == '__main__':
p = Text('yjy')
p.start() #通知操作系统子进程开始
print('主进程结束')
二、验证进程的内存空间隔离
from multiprocessing import Process
import time
x = 0 #定义一个变量x
def Check():
global x
x = 100
print(f'子进程的x:{x}')
if __name__ == '__main__':
p = Process(target=Check)
p.start()
print(f'父进程的x:{x}')
-----------------------------------------------------------------------------------
父进程的x:0
子进程的x:100
父进程的x和子进程的x不是一个值,说明他们两个进程互不影响!
三、僵尸进程与孤儿进程
僵尸进程(有害):当子进程结束的时候,不会将所有内容都释放掉,他会留下自己的pid(类似身份证号码)供父进程来查看,此所谓进程死了没死干净,这就是僵尸进程,他会等待父进程最后把他处理掉
孤儿进程(无害):一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。
原文地址:https://www.cnblogs.com/lulingjie/p/11529097.html
- excel导入与导出
- 【LeetCode 204】关关的刷题日记40 Number of Boomerangs
- 洛谷P1339 [USACO09OCT]热浪Heat Wave(最短路)
- excel导出类
- 我的HTML总结之常用基础便签
- php性能监测模块XHProf
- php dirname(__FILE__) 获取当前文件的绝对路径
- 洛谷P2939 [USACO09FEB]改造路Revamping Trails(最短路)
- 微信公众平台开发接口PHP SDK完整版
- 我的HTML总结之HTML发展史
- BZOJ 4152: [AMPPZ2014]The Captain(最短路)
- js获取div编辑框,textarea,input text的光标位置,兼容FF和IE
- BZOJ 4289: PA2012 Tax(最短路)
- php QR Code二维码生成类
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 基于Python下载网络图片方法汇总代码实例
- 基于pytorch中的Sequential用法说明
- pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
- tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
- PHP基于cookie实现统计在线人数功能示例
- PHP实现对数字分隔加千分号的方法
- PHP验证类的封装与使用方法详解
- Laravel框架实现的rbac权限管理操作示例
- Laravel框架实现的批量删除功能示例
- PyTorch中model.zero_grad()和optimizer.zero_grad()用法
- 利用PyTorch实现VGG16教程
- PHP添加文字水印或图片水印的水印类完整源代码与使用示例
- Python 分布式缓存之Reids数据类型操作详解
- Pycharm打开已有项目配置python环境的方法
- python cv2.resize函数high和width注意事项说明