Python实现多进程的方法总结
- 更新时间:2020-04-12 10:08:27
- 编辑:融宜然
方式一: 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()
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对码农之家的支持。如果你想了解更多相关内容请查看下面相关链接
相关教程
-
python多进程读图提取特征存npy方法详解
这篇文章主要为大家详细介绍了python多进程读图提取特征存npy,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
发布时间:2019-06-10
-
Python多进程fork()函数详解
今天小编就为大家分享一篇关于Python多进程fork()函数详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
发布时间:2019-12-19
-
实例分析Python多进程池 multiprocessing Pool的使用
这篇文章主要介绍了Python多进程池 multiprocessing Pool用法,结合实例形式分析了多进程池 multiprocessing Pool相关概念、原理及简单使用技巧,需要的朋友可以参考下
发布时间:2020-03-05
-
总结Python中并行(多进程)方法
本篇文章主要介绍了Python中使用多进程来实现并行处理的方法小结,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
发布时间:2020-02-12
-
实例分析Python实现的多进程和多线程功能
这篇文章主要介绍了Python实现的多进程和多线程功能,结合实例形式分析了Python多线程与多进程实现分布式系统功能相关操作技巧,需要的朋友可以参考下
发布时间:2020-02-22
-
Python编程导论(第2版)
《Python编程导论 第2版》基于python3.5讲解计算机编程思想科学导论的入门书 麻省理工MIT热门MOOC教材,计算机科学基础知识教程,掌握用计算思维解决问题的能力。
大小:12.1MPython编程电子书
-
Python数据分析与应用
大小:281 MBPython数据
-
Selenium自动化测试:基于Python语言
Selenium是一个主要用于Web应用程序自动化测试的工具集合,在行业内已经得到广泛的应用。本书介绍了如何用Python语言调用Selenium WebDriver接口进行自动化测试
大小:6.93 MBSelenium电子书
-
Python机器学习经典实例
《Python机器学习经典实例》首先通过实用的案例介绍机器学习的基础知识,然后介绍一些稍微复杂的机器学习算法,例如支持向量机、极端随机森林、隐马尔可夫模型、条件随机场、深度神经网
大小:27.3MPython机器学习电子书
-
Python物理学高效计算
本书由两位核工程博士编写,书中包含了物理领域的许多实际案例。通过阅读本书,读者会学到如何用Python编程语言收集、分析数据,构建软件,发布结果等技能。 感兴趣的可以下载学习
大小:6.6 MBPython电子书
-
Python机器学习基础教程
这是一本机器学习入门书,以Python语言介绍,包含机器学习的基本概念及其应用;实践中最常用的机器学习算法以及这些算法的优缺点;待处理数据的呈现方式的重要性等内容
大小:28.3 MBPython电子书
-
Python极客项目编程
Python极客项目编程通过14个有趣的项目,帮助和鼓励读者探索Python编程的世界,展示如何用Python来解决各种实际问题,以及如何使用一些流行的Python库,帮助读者掌握实用的Python编程技能。
大小:6.5 MBPython编程电子书
-
趣学Python编程
Python是一款解释型、面向对象、动态数据类型的高级程序设计语言。本书是轻松、快速掌握Python编程的入门读物,通俗易懂,讲解由浅入深,力求将读者阅读和学习的难度降到最低
大小:43.9 MBPython编程电子书
-
基于ArcGIS的Python编程秘笈(第2版)
80多个编程技巧,教你如何更好地完成地理信息处理,介绍如何使用Python来创建桌面ArcGIS环境下的地理处理脚本、管理地图文档和图层、查找和修复丢失的数据链接、编辑要素类和表中的数据等
大小:54.8 MBPython编程电子书
-
零基础学Python
本书是针对零基础编程学习者研发的Python自学入门教程,详细地介绍了使用 IDLE 及 Python 框架进行程序管理的知识和技术,手把手教,快速摆脱小白窘境,带你开启编程大门
大小:314 MBpython编程电子书