Python使用进程Process模块管理资源


Posted in Python onMarch 05, 2020

进程Process是对各种资源管理的集合,包含对各种资源的调用、内存的管理、网络接口的调用;一个进程Process可以包含多个子进程,启动一个进程的时候会自动创建一个线程,进程里的第一个线程就是主线程(即python __name__ == ‘__main__');

进程Process模块

对于线程操作可以用threading模块,那么对于进程的创建python同样也提供了Process模块,创建进程时需要导入该模块,语法如下:

# 导入进程模块
from multiprocessing import Process
# 创建进程
p = Process(group=None, target=None, name=None, args=(), kwargs={})

参数介绍:

group — 参数未使用,默认值为None;

target — 表示调用对象,即子进程要执行的任务(函数名字);

args — 子进程对应函数的参数,并且类型是元组tuple;

kwargs — 子进程对应函数的参数,并且类型是字典dict,如kwargs = {‘name':Jack, ‘age':18};

name — 子进程名称;

返回值:返回进程实例对象;

三.进程Process函数介绍

其实进程Process的函数和线程threading类似,具体如下:

1.start() — 启动进程;

2.terminate() — 强制终止进程,不会进行任何清理操作。如果该进程终止前,创建了子进程,那么该子进程在其强制结束后变为僵尸进程;如果该进程还保存了一个锁那么也将不会被释放,进而导致死锁,使用时,要注意;

3.is_alive() — 判断某进程是否存活,存活返回True,否则False;

4.join([timeout]) — 主线程等待子线程终止。timeout为可选择超时时间;需要强调的是,p.join只能join住start开启的进程,而不能join住run开启的进程 ;

5.daemon — 默认值为False,如果设置为True,代表该进程为后台守护进程;当该进程的父进程终止时,该进程也随之终止;并且设置为True后,该进程不能创建子进程,设置该属性必须在start()之前;

6.name — 进程名称;

7.pid— 进程ID标识,pid,值得注意的是:如果在start函数之前获取pid默认为None,因为进程还未创建,获取不到pid;

8.exitcode — 进程运行时为None,如果为-N,表示被信号N结束了;

9.authkey — 进程身份验证,默认是由os.urandom()随机生成32字符的字符串。这个键的用途是设计涉及网络连接的底层进程间的通信提供安全性,这类连接只有在具有相同身份验证才能成功;

进程Process使用

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:何以解忧
@Blog(个人博客地址): shuopython.com
@WeChat Official Account(微信公众号):猿说python
@Github:www.github.com
 
@File:python_process.py
@Time:2019/12/21 21:25
 
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
"""
 
from multiprocessing import Process
 
 
def people_info(*args,**kwargs):
  print(args,kwargs)
 
 
 
def main():
 
  # 信息列表
  list_info = [{"name":"zhangsan","height":"175cm"},
         {"name": "lisi", "height": "155cm"},
         {"name": "wangwu", "height": "195cm"},
         {"name": "liqi", "height": "166cm"},
         {"name": "wangba", "height": "125cm"},]
 
  # 创建进程
  for i in range(5):
    p = Process(target=people_info,args=(i,),kwargs=list_info[i])
    # 设置为守护进程,必须设置在start函数之前,否则会产生异常
    # 默认为False,即主进程会等待子进程结束之后才结束,
    # 如果设置为True,主进程结束之后所有的子进程自动结束,不管子进程是否已经执行完所有任务
    # p.daemon = True
 
    # 启动进程
    p.start()
 
    # 获取进程pid,如果在start函数之前获取pid,默认为None,因为进程还没启动
    print("进程process pid = ",p.pid)
    # 获取进程名字
    print("进程process name = ",p.name)
    # 获取进程pid
    print("进程process exitcode = ",p.exitcode)
if __name__ == "__main__":
  main()

输出结果:

进程process pid = 2600
进程process name = Process-1
进程process exitcode = None
进程process pid = 4372
进程process name = Process-2
进程process exitcode = None
进程process pid = 14124
进程process name = Process-3
进程process exitcode = None
进程process pid = 10920
进程process name = Process-4
进程process exitcode = None
进程process pid = 4892
进程process name = Process-5
进程process exitcode = None
(0,) {'name': 'zhangsan', 'height': '175cm'}
(1,) {'name': 'lisi', 'height': '155cm'}
(2,) {'name': 'wangwu', 'height': '195cm'}
(3,) {'name': 'liqi', 'height': '166cm'}
(4,) {'name': 'wangba', 'height': '125cm'}

小窍门:

Python 的 os 模块封装了常见的系统调用,其中就包括:

os.fork() 创建子进程
os.getpid() 获取自身 ID
os.getppid() 获取父进程 ID

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python逐行读取文件内容的三种方法
Jan 20 Python
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
Mar 05 Python
Python中利用函数装饰器实现备忘功能
Mar 30 Python
使用Python从零开始撸一个区块链
Mar 14 Python
浅谈关于Python3中venv虚拟环境
Aug 01 Python
Python3利用print输出带颜色的彩色字体示例代码
Apr 08 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
Jul 18 Python
浅谈Python 敏感词过滤的实现
Aug 15 Python
python 字典有序并写入json文件过程解析
Sep 30 Python
django ajax发送post请求的两种方法
Jan 05 Python
Python常用库大全及简要说明
Jan 17 Python
Python学习开发之图形用户界面详解
Aug 23 Python
Python json模块与jsonpath模块区别详解
Mar 05 #Python
Python如何用filter函数筛选数据
Mar 05 #Python
Python API len函数操作过程解析
Mar 05 #Python
Python通过Tesseract库实现文字识别
Mar 05 #Python
Python爬虫实现模拟点击动态页面
Mar 05 #Python
python实现图片横向和纵向拼接
Mar 05 #Python
基于Python生成个性二维码过程详解
Mar 05 #Python
You might like
php基础教程 php内置函数实例教程
2012/08/21 PHP
PHP使用ajax的post方式下载excel文件简单示例
2019/08/06 PHP
php使用自带dom扩展进行元素匹配的原理解析
2020/05/29 PHP
window.location.hash 属性使用说明
2010/03/20 Javascript
jQuery EasyUI API 中文文档 - TreeGrid 树表格使用介绍
2011/11/21 Javascript
ie 7/8不支持trim的属性的解决方案
2014/05/23 Javascript
node.js中的fs.open方法使用说明
2014/12/17 Javascript
jQuery实现的产品自动360度旋转展示特效源码分享
2015/08/21 Javascript
Jquery为DIV添加click事件的简单实例
2016/06/02 Javascript
JQuery 封装 Ajax 常用方法(推荐)
2017/05/21 jQuery
详解nodejs中express搭建权限管理系统
2017/09/15 NodeJs
Vue.js 中的 v-show 指令及用法详解
2018/11/19 Javascript
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
基于javascript实现日历功能原理及代码实例
2020/05/07 Javascript
nginx部署多个vue项目的方法示例
2020/09/06 Javascript
JavaScript 判断浏览器是否是IE
2021/02/19 Javascript
[00:36]TI7不朽珍藏III——斯温不朽展示
2017/07/15 DOTA
如何运行Python程序的方法
2013/04/21 Python
采用python实现简单QQ单用户机器人的方法
2014/07/03 Python
Python字符串的常见操作实例小结
2019/04/08 Python
django框架model orM使用字典作为参数,保存数据的方法分析
2019/06/24 Python
Django中的cookie和session
2019/08/27 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
2020/06/10 Python
python 读txt文件,按‘,’分割每行数据操作
2020/07/05 Python
Python 绘制可视化折线图
2020/07/22 Python
Python自动登录QQ的实现示例
2020/08/28 Python
用python 绘制茎叶图和复合饼图
2021/02/26 Python
高分子材料与工程专业推荐信
2013/12/01 职场文书
2014年村支部书记四风对照检查材料思想汇报
2014/10/02 职场文书
小学校园广播稿集锦
2014/10/04 职场文书
司法局群众路线教育实践活动开展情况总结
2014/10/25 职场文书
2014年社团工作总结范文
2014/11/27 职场文书
试用期解除劳动合同通知书
2015/04/16 职场文书
写给媳妇的检讨书
2015/05/06 职场文书
JavaScript原始值与包装对象的详细介绍
2021/05/11 Javascript