Python_进程(二)
来源:互联网 发布:综漫 收集数据做主神 编辑:程序博客网 时间:2024/05/22 10:45
前言:
上篇说道了使用fork函数创建多进程,但是fork只能在Mac/Linux/Unix操作系统上使用,但是如果我们想在Windows上使用Python创建多进程该怎么办?
庆幸的是Pythong是跨平台的,自然就提供了一个跨平台的多进程支持-------multiprocessing模块。
可以使用multiprocessing模块中的Process类来代表一个进程对象。(通过创建一个Process类的实例对象可以完成子进程的创建)
演示代码:
from multiprocessing import Processdef sub_process(arg): print("子进程的:%s" % arg)if __name__ == '__main__': print("父进程") p = Process(target=sub_process, args=("参数",)) p.start() p.join()输出结果:
父进程
子进程的:参数
创建子进程时,需要传入一个执行函数和函数的参数,创建一个Process的实例,使用start()方法开启 执行sub_process函数里面的代码。当sub_process函数里面的代码执行完之后,就意味着这个进程执行结束。
使用Process创建的子进程有一个特点,主进程在结束之前等待所有的子进程都结束,主进程才结束。
join()方法可以等待子进程结束后再继续往下运行,通常用于进程间的同步。也可以理解为回收子进程。
语法结构和常用的方法、属性
Process语法结构如下:
Process([group [, target [, name [, args [, kwargs]]]]])
target:表示这个进程实例所调用对象;
args:表示调用对象的位置参数元组;
kwargs:表示调用对象的关键字参数字典;
name:为当前进程实例的别名;
group:大多数情况下用不到;
Process类常用方法:
is_alive():判断进程实例是否还在执行;
join([timeout]):是否等待进程实例执行结束,或等待多少秒;
start():启动进程实例(创建子进程);
run():如果没有给定target参数,对这个对象调用start()方法时,就将执行对象中的run()方法;
terminate():不管任务是否完成,立即终止;
Process类常用属性:
name:当前进程实例别名,默认为Process-N,N为从1开始递增的整数;pid:当前进程实例的PID值;
进程的创建--Process子类
当使用函数创建的进程无法满足我们的需求时,我们可以使用Process子类创建进程。
自定义一个类,继承Process类,每次实例化这个类的时候,就相当于实例化一个进程。
演示代码:
from multiprocessing import Processclass SubProcess(Process): def run(self): print("子进程")def main(): print("父进程") p = SubProcess() p.start()main()输出结果:
父进程
子进程
总结:
这篇博客一共讲了用两种方式创建进程,一种是使用multiprocessing模块中的Process类创建进程;另一种是使用Process子类创建进程。
- Python_进程(二)
- Python_进程(一)
- python_函数(二)
- python_面向对象(二)
- Python_进程池
- python_正则表达式(二)
- Python_进程_线程篇
- python_
- python_装饰器二(对有/不定长参数函数的装饰)
- 进程管理(二)进程
- Python_高级函数(1)
- Python_高级函数(2)
- python_基础(一)字典
- python_面向对象(一)
- python_面向对象(初始)
- 进程管理(二)
- 进程(二)
- 进程保护(二)
- centOS7.0安装Redis及客户端连接
- 直接解析
- Linux下安装jdk并配置环境变量
- Ajax全接触
- 1575:16进制A+B
- Python_进程(二)
- java公平锁源码解读
- 深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)
- 翻转单词顺序列
- 2017.9.3
- [BZOJ]5000: OI树 倍增
- 179.LK's problem
- 指针和数组与sizeof运算符(嵌入式笔试必考题)
- 面试技巧,如何通过索引说数据库优化能力,内容来自Java web轻量级开发面试教程