python多进程创建细节(Python实现多进程的四种方式)
类别:脚本大全 浏览量:2970
时间:2022-01-23 02:27:40 python多进程创建细节
Python实现多进程的四种方式方式一: os.fork()
|
# -*- coding:utf-8 -*- """ pid=os.fork() 1.只用在Unix系统中有效,Windows系统中无效 2.fork函数调用一次,返回两次:在父进程中返回值为子进程id,在子进程中返回值为0 """ import os pid = os.fork() if pid = = 0 : print ( "执行子进程,子进程pid={pid},父进程ppid={ppid}" . format (pid = os.getpid(),ppid = os.getppid())) else : print ( "执行父进程,子进程pid={pid},父进程ppid={ppid}" . format (pid = pid,ppid = os.getpid())) |
方式二: 使用multiprocessing模块: 创建Process的实例,传入任务执行函数作为参数
|
# -*- coding:utf-8 -*- """ Process常用属性与方法: name:进程名 pid:进程id run(),自定义子类时覆写 start(),开启进程 join(timeout=None),阻塞进程 terminate(),终止进程 is_alive(),判断进程是否存活 """ import os,time from multiprocessing import Process def worker(): print ( "子进程执行中>>> pid={0},ppid={1}" . format (os.getpid(),os.getppid())) time.sleep( 2 ) print ( "子进程终止>>> pid={0}" . format (os.getpid())) def main(): print ( "主进程执行中>>> pid={0}" . format (os.getpid())) ps = [] # 创建子进程实例 for i in range ( 2 ): p = Process(target = worker,name = "worker" + str (i),args = ()) ps.append(p) # 开启进程 for i in range ( 2 ): ps[i].start() # 阻塞进程 for i in range ( 2 ): ps[i].join() print ( "主进程终止" ) if __name__ = = '__main__' : main() |
方式三: 使用multiprocessing模块: 派生Process的子类,重写run方法
|
# -*- coding:utf-8 -*- import os,time from multiprocessing import Process class MyProcess(Process): def __init__( self ): Process.__init__( self ) def run( self ): print ( "子进程开始>>> pid={0},ppid={1}" . format (os.getpid(),os.getppid())) time.sleep( 2 ) print ( "子进程终止>>> pid={}" . format (os.getpid())) def main(): print ( "主进程开始>>> pid={}" . format (os.getpid())) myp = MyProcess() myp.start() # myp.join() print ( "主进程终止" ) if __name__ = = '__main__' : main() |
方式四: 使用进程池Pool
|
# -*- coding:utf-8 -*- import os,time from multiprocessing import Pool def worker(arg): print ( "子进程开始执行>>> pid={},ppid={},编号{}" . format (os.getpid(),os.getppid(),arg)) time.sleep( 0.5 ) print ( "子进程终止>>> pid={},ppid={},编号{}" . format (os.getpid(),os.getppid(),arg)) def main(): print ( "主进程开始执行>>> pid={}" . format (os.getpid())) ps = Pool( 5 ) for i in range ( 10 ): # ps.apply(worker,args=(i,)) # 同步执行 ps.apply_async(worker,args = (i,)) # 异步执行 # 关闭进程池,停止接受其它进程 ps.close() # 阻塞进程 ps.join() print ( "主进程终止" ) if __name__ = = '__main__' : main() |
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对开心学习网的支持。如果你想了解更多相关内容请查看下面相关链接
原文链接:https://blog.csdn.net/topleeyap/article/details/78981848
您可能感兴趣
- pythonmatplotlib画图流程(python3使用matplotlib绘制条形图)
- python pandas dataframe 查询(Python实现从SQL型数据库读写dataframe型数据的方法基于pandas)
- python与php(解决Python3 被PHP程序调用执行返回乱码的问题)
- python动态数组原理(Python实现的旋转数组功能算法示例)
- pythonmatplotlib实例(Python3使用Matplotlib 绘制精美的数学函数图形)
- python交互模式下如何开始运行(python交互界面的退出方法)
- python简易版学生管理系统(python3.6实现学生信息管理系统)
- python语言翻译中文(浅析Python 实现一个自动化翻译和替换的工具)
- 如何用python做一个弹窗(python实现祝福弹窗效果)
- scrapy框架爬取小说的正文内容(Scrapy框架爬取Boss直聘网Python职位信息的源码)
- python设置按钮(Python按钮的响应事件详解)
- 用python图片转字符串(python实现图片转字符小工具)
- python中的变量与变量类型(Python变量类型知识点总结)
- python渗透攻击(Python实现DDos攻击实例详解)
- python初学篇元组(元组列表字典莫烦python基础)
- python零基础实战项目(十个Python练手的实战项目,学会这些Python就基本没问题了推荐)
- 电影《民间怪谈录之走阴人》定档8月5日,开启一场中式惊悚之旅(电影民间怪谈录之走阴人定档8月5日)
- 原创图画书,以儿童视角讲述中国故事(以儿童视角讲述中国故事)
- 八月再见 愿你岁月不扰,余生静好(八月再见愿你岁月不扰)
- 赏读 八月再见,九月你好(赏读八月再见九月你好)
- 散文 八月再见,九月,我在风中等你(散文八月再见九月)
- 8月再见 9月你好(8月再见)
热门推荐
- 用python实现atm银行系统(Python实现的银行系统模拟程序完整案例)
- css3弹性盒模型常用属性(CSS3弹性盒模型开发笔记三)
- 如何用python创建单链表(Python3实现的反转单链表算法示例)
- python迭代列表解析(Python可迭代对象操作示例)
- python写的工具(python调用虹软2.0第三版的具体使用)
- css中div高度自适应
- mysql存储过程limit参数(MySQL存储过程in、out和inout参数示例和总结)
- label for属性
- javascript如何判断类型(JavaScript如何优化逻辑判断代码详解)
- thinkphp框架案例(thinkphp5.1框架容器与依赖注入实例分析)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9