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版)

    《Python编程导论 第2版》基于python3.5讲解计算机编程思想科学导论的入门书 麻省理工MIT热门MOOC教材,计算机科学基础知识教程,掌握用计算思维解决问题的能力。

    大小:12.1MPython编程电子书

  • Python数据分析与应用

    Python数据分析与应用

    大小:281 MBPython数据

  • Selenium自动化测试:基于Python语言

    Selenium自动化测试:基于Python语言

    Selenium是一个主要用于Web应用程序自动化测试的工具集合,在行业内已经得到广泛的应用。本书介绍了如何用Python语言调用Selenium WebDriver接口进行自动化测试

    大小:6.93 MBSelenium电子书

  • Python机器学习经典实例

    Python机器学习经典实例

    《Python机器学习经典实例》首先通过实用的案例介绍机器学习的基础知识,然后介绍一些稍微复杂的机器学习算法,例如支持向量机、极端随机森林、隐马尔可夫模型、条件随机场、深度神经网

    大小:27.3MPython机器学习电子书

  • Python物理学高效计算

    Python物理学高效计算

    本书由两位核工程博士编写,书中包含了物理领域的许多实际案例。通过阅读本书,读者会学到如何用Python编程语言收集、分析数据,构建软件,发布结果等技能。 感兴趣的可以下载学习

    大小:6.6 MBPython电子书

  • Python机器学习基础教程

    Python机器学习基础教程

    这是一本机器学习入门书,以Python语言介绍,包含机器学习的基本概念及其应用;实践中最常用的机器学习算法以及这些算法的优缺点;待处理数据的呈现方式的重要性等内容

    大小:28.3 MBPython电子书

  • Python极客项目编程

    Python极客项目编程

    Python极客项目编程通过14个有趣的项目,帮助和鼓励读者探索Python编程的世界,展示如何用Python来解决各种实际问题,以及如何使用一些流行的Python库,帮助读者掌握实用的Python编程技能。

    大小:6.5 MBPython编程电子书

  • 趣学Python编程

    趣学Python编程

    Python是一款解释型、面向对象、动态数据类型的高级程序设计语言。本书是轻松、快速掌握Python编程的入门读物,通俗易懂,讲解由浅入深,力求将读者阅读和学习的难度降到最低

    大小:43.9 MBPython编程电子书

  • 基于ArcGIS的Python编程秘笈(第2版)

    基于ArcGIS的Python编程秘笈(第2版)

    80多个编程技巧,教你如何更好地完成地理信息处理,介绍如何使用Python来创建桌面ArcGIS环境下的地理处理脚本、管理地图文档和图层、查找和修复丢失的数据链接、编辑要素类和表中的数据等

    大小:54.8 MBPython编程电子书

  • 零基础学Python

    零基础学Python

    本书是针对零基础编程学习者研发的Python自学入门教程,详细地介绍了使用 IDLE 及 Python 框架进行程序管理的知识和技术,手把手教,快速摆脱小白窘境,带你开启编程大门

    大小:314 MBpython编程电子书

用户留言