Process 开启子进程 的两种方式、join控制子进程、守护进程
一、join控制子进程的一种方式
当主进程需要在子进程结束之后结束时,我们需要用到join来控制子进程。
import time
import random
from multiprocessing import Process
def func(index):
time.sleep(random.random())
print('第%s个邮件已经发送完毕'%index)
if __name__ == '__main__':
p_list = []
for i in range(10):
p = Process(target= func,args=(i,))
p.start()
p_list.append(p)
for p in p_list:
p.join() # 阻塞 直到p进程执行完毕就结束阻塞
print('10个邮件已经发送完成')
10个发邮件的子进程是同时创建的,但是是随机分批次执行的,两个for循环几乎是同时进行的,一边执行,一边发送。
二、join控制子进程的一种方式
当我们需要一面向对象编程时
import os
from multiprocessing import Process
class MyProcess(Process):
def __init__(self,arg):
super().__init__() # 调用父类的__init__方法
self.arg = arg
def run(self):
print('子进程',os.getpid(),os.getppid(),self.arg)
if __name__ == '__main__':
for i in range(10):
p = MyProcess('参数')
p.start() # 开启一个子进程,让这个子进程执行run方法
# p.join()
print('主进程:',os.getpid())
三、守护进程
import time
from multiprocessing import Process
def func():
print('子进程 start')
time.sleep(3)
print('子进程 end')
if __name__ == '__main__':
p = Process(target= func)
p.daemon = True # 设置p为一个守护进程,必须在start之前完成
p.start()
time.sleep(2)
print('主进程')
1、通过daemon给主进程设置一个守护进程。必须在start之前完成
2、守护进程会随着主进程的代码执行完毕而结束
import time
from multiprocessing import Process
def func1():
count = 1
while True:
time.sleep(0.5)
print(count*'*')
count +=1
def func2():
print('func2 start')
time.sleep(5)
print('func2 end')
if __name__ == '__main__':
p1 = Process(target=func1)
p1.daemon = True
p1.start()
Process(target=func2).start()
time.sleep(3)
print('主程序')
结果为:
func2 start
*
**
***
****
*****
主程序
func2 end
如果主进程代码已经执行完毕,但是子进程还没有执行完,守护进程不会继续执行
守护进程会随着主进程的代码执行结束而结束
主进程会等待子进程结束,守护进程只等待主进程代码结束就结束了
Process 开启子进程 的两种方式、join控制子进程、守护进程的更多相关文章
- 并发编程 - 进程 - 1.开启子进程的两种方式/2.查看pid/3.Process对象的其他属性或方法/4.守护进程
		
1.开启子进程的两种方式: # 方式1: from multiprocessing import Process import time def task(name): print('%s is ru ...
 - python 之 并发编程(开启子进程的两种方式,进程对象的属性)
		
第九章并发编程 同一个程序执行多次是多个进程 import time import os  print('爹是:',os.getppid()) #父进程PID,(pycharm) print('me ...
 - 并发编程 - 线程 - 1.开启线程的两种方式/2.进程与线程的区别/3.Thread对象的其他属性或方法/4.守护线程
		
1.开启线程的两种方式: 进程,线程: 进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合)而线程才是cpu上的执行单位) 1.同一个进程内的多个线程共享该进程内的地址资源 2.创建线 ...
 - python 之  并发编程(线程理论,开启线程的两种方式,进程与线程的区别,线程对象的其他方法)
		
9.9 线程理论 1.什么是线程 线程指的是一条流水线的工作过程 进程根本就不是一个执行单位,进程其实是一个资源单位,一个进程内自带一个线程,线程才是执行单位 2.进程VS线程 同一进程内的线程们共享 ...
 - Python 35 线程(1)线程理论、开启线程的两种方式
		
一:线程理论 1 什么是线程 进程其实一个资源单位,而进程内的线程才是cpu上的执行单位 线程其实指的就是代码的执行过程2 为何要用线程 线程vs进程 1. 同一进程下的多个线程共享该进程 ...
 - python 并发编程 多线程 开启线程的两种方式
		
一 threading模块介绍 multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性 二 开启线程的两种方式 第一种 每造一个进程,默认有一个线程,就是 ...
 - DJango中开启事务的两种方式
		
目录 Django中开启事务的两种方式 第一种 第二种 Django中开启事务的两种方式 第一种 from django.db import transaction with transaction. ...
 - Python创建进程、线程的两种方式
		
代码创建进程和线程的两种方式 """ 定心丸:Python创建进程和线程的方式基本都是一致的,包括其中的调用方法等,学会一个 另一个自然也就会了. "" ...
 - Day9   进程理论       开启进程的两种方式          多进程实现并发套接字        join方法       Process对象的其他属性或者方法       守护进程                      操作系统介绍
		
操作系统简介(转自林海峰老师博客介绍) #一 操作系统的作用: 1:隐藏丑陋复杂的硬件接口,提供良好的抽象接口 2:管理.调度进程,并且将多个进程对硬件的竞争变得有序 #二 多道技术: 1.产生背景: ...
 
随机推荐
- 重开Vue2.0
			
目录: 内容: 一.Vue内部指令: 1.v-if v-else&v-show v-if与v-show都是选择性显示内容的指令,但是二者之间有区别: 1.v-if:判断是否加载,在需要的时候加 ...
 - vue2中使用mint-ui,性别选择
			
安装需要的组件 import { DatetimePicker,Toast,Popup,Picker } from 'mint-ui'; templete部分 <div class=" ...
 - webpack的知识内容
			
webpack的构建工具: 浏览器的兼容性? 转换ES6语法: 转化JSX: css
 - win7共享打印机如何设置,xp系统如何连接共享打印机。
			
一.xp如何连接win7共享打印机——连接win7共享打印机出现“禁用当前的账户”怎么办 保证xp和win7在同一局域网内.然后在xp电脑中打开[运行],输入win7电脑的ip地址.比如,我的办公 ...
 - Deploy Descriptor
			
之前我们在编写HelloWorld项目时,在WEB-INF目录下创建了一个web.xml文件.这个文件叫做部署描述文件,每个Servlet应用程序的部署描述文件的名称都是web.xml.Web容器在启 ...
 - js正则表达式讲的最好的
			
https://www.cnblogs.com/chenmeng0818/p/6370819.html
 - Dynamics 365 CRM  添加自定义按钮
			
在添加自定义按钮之前,我们需要下载这个工具 RibbonWorkbench, 它是专门针对自定义命令栏和Ribbon区域. 下载之后是一个zip压缩包. 怎样安装RibbonWorkbench: Se ...
 - 第一章 HTML+CSS(上)
			
HTML 网页的组成 HTML简介 HTML的语法 HTML的常用标签 HTML中的表格和表单 CSS的简单应用 我们这里使用WebStorm开发工具 配置浏览器 常用插件: CodeGlance 代 ...
 - 管理工具:SWOT、PDCA、6W2H、SMART、WBS、时间管理
			
01:SWOT分析法 Strengths:优势 Weaknesses:劣势 Opportunities:机会 Threats:威胁 意义:帮您清晰地把握全局,分析自己在资源方面的优势与劣势,把握环境提 ...
 - 游戏数据分析中“次日留存率”与“游戏生命周期第N天上线率”的SAS实现
			
在游戏行业,次日留存率是个很重要的指标,对于评价一款游戏的优劣具有很重要的参考价值. 下面先看以下相关的定义: 用户留存:统计时间区间内,新登用户在随后不同时期的登录使用情况. 日次留存率:日新登用户 ...