Python实现多进程的四种方式


Posted in Python onFebruary 22, 2019

方式一: 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 相关文章推荐
学习python (2)
Oct 31 Python
python之wxPython菜单使用详解
Sep 28 Python
python文件读写操作与linux shell变量命令交互执行的方法
Jan 14 Python
Python中标准库OS的常用方法总结大全
Jul 19 Python
Python登录注册验证功能实现
Jun 18 Python
Python全排列操作实例分析
Jul 24 Python
python实现H2O中的随机森林算法介绍及其项目实战
Aug 29 Python
python实现QQ邮箱发送邮件
Mar 06 Python
Django如何实现防止XSS攻击
Oct 13 Python
python实现发送QQ邮件(可加附件)
Dec 23 Python
python中操作文件的模块的方法总结
Feb 04 Python
解决python 输出到csv 出现多空行的情况
Mar 24 Python
python在回调函数中获取返回值的方法
Feb 22 #Python
python实现批量注册网站用户的示例
Feb 22 #Python
Python多进程fork()函数详解
Feb 22 #Python
Django restframework 源码分析之认证详解
Feb 22 #Python
运用Python的webbrowser实现定时打开特定网页
Feb 21 #Python
Python3爬虫之自动查询天气并实现语音播报
Feb 21 #Python
python 自动批量打开网页的示例
Feb 21 #Python
You might like
PHP之十六个魔术方法详细介绍
2016/11/01 PHP
php实现头像上传预览功能
2017/04/27 PHP
Apache站点配置SSL强制跳转443
2021/03/09 Servers
js检测客户端不是firefox则提示下载
2007/04/07 Javascript
奇妙的js
2007/09/24 Javascript
一个收集图片的bookmarlet(js 刷新页面中的图片)
2010/05/27 Javascript
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
ExtJs纵坐标值重复问题的解决方法
2014/02/27 Javascript
javascript结合CSS实现苹果开关按钮特效
2015/04/07 Javascript
Jquery实现遮罩层的方法
2015/06/08 Javascript
JS实现网页顶部向下滑出的全国城市切换导航效果
2015/08/22 Javascript
只需五句话搞定JavaScript作用域(经典)
2016/07/26 Javascript
JavaScript中ES6字符串扩展方法
2016/08/26 Javascript
[原创]JavaScript语法高亮插件highlight.js用法详解【附highlight.js本站下载】
2016/11/01 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
2016/12/08 Javascript
jQuery实现标签页效果实战(4)
2017/02/08 Javascript
Vue 使用中的小技巧
2018/04/26 Javascript
详解基于mpvue微信小程序下载远程图片到本地解决思路
2019/05/16 Javascript
vue+Element-ui实现分页效果
2020/11/15 Javascript
[00:32]2018DOTA2亚洲邀请赛出场——LGD
2018/04/04 DOTA
python读取csv文件示例(python操作csv)
2014/03/11 Python
python删除列表中重复记录的方法
2015/04/28 Python
pytorch cnn 识别手写的字实现自建图片数据
2018/05/20 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
2018/09/02 Python
Python字符串逆序输出的实例讲解
2019/02/16 Python
使用python PIL库实现简单验证码的去噪方法步骤
2019/05/10 Python
自定义django admin model表单提交的例子
2019/08/23 Python
浅谈Tensorflow 动态双向RNN的输出问题
2020/01/20 Python
浅析PyCharm 的初始设置(知道)
2020/10/12 Python
美国知名的时尚购物网站:Anthropologie
2016/12/22 全球购物
大码女装:Ulla Popken
2019/08/06 全球购物
入党申请自荐书范文
2014/02/11 职场文书
专业技术人员年度考核评语
2014/12/31 职场文书
在职证明范本
2015/06/15 职场文书
python生成随机数、随机字符、随机字符串
2021/04/06 Python