侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Python3.5多进程原理与用法实例分析

Python  /  管理员 发布于 7年前   160

本文实例讲述了Python3.5多进程原理与用法。分享给大家供大家参考,具体如下:

进程类:Process

示例及代码:

(1)创建函数作为单进程

#!/usr/bin/env python# -*- coding:utf-8 -*-# Author:ZhengzhengLiuimport multiprocessingimport time#创建函数并将其作为单个进程def worker(interval):  n = 5    #进程数  while n>0:    print("The time is :{0}".format(time.ctime()))   #初始化时间    time.sleep(interval)    #睡眠时间    n-=1if __name__ == "__main__":  # 创建进程,target:调用对象,args:传参数到对象  p = multiprocessing.Process(target=worker,args=(2,))  p.start()    #开启进程  print("进程号:",p.pid)  print("进程别名:",p.name)  print("进程存活状态:",p.is_alive())

运行结果:

进程号: 6784
进程别名: Process-1
进程存活状态: True
The time is :Wed Nov  1 10:59:03 2017
The time is :Wed Nov  1 10:59:05 2017
The time is :Wed Nov  1 10:59:07 2017
The time is :Wed Nov  1 10:59:09 2017
The time is :Wed Nov  1 10:59:11 2017

(2)创建函数作为多进程

#!/usr/bin/env python# -*- coding:utf-8 -*-# Author:ZhengzhengLiuimport multiprocessingimport time#创建函数作为多进程def work1(interval):  print("work1...")  time.sleep(interval)  print("end work1...")def work2(interval):  print("work2...")  time.sleep(interval)  print("end work2...")def work3(interval):  print("work3...")  time.sleep(interval)  print("end work3...")if __name__ == "__main__":  p1 = multiprocessing.Process(target=work1,args=(1,))  p2 = multiprocessing.Process(target=work2,args=(2,))  p3 = multiprocessing.Process(target=work3,args=(3,))  p1.start()  p2.start()  p3.start()  print("The number of CPU is %d:"%(multiprocessing.cpu_count()))   #打印CPU核数  for p in multiprocessing.active_children():     #循环打印子进程的名称和pid    print("子进程名称:%s,子进程pid:%d" %(p.name,p.pid))  print("ending....")

运行结果:

The number of CPU is 4:
子进程名称:Process-2,子进程pid:7108
子进程名称:Process-1,子进程pid:1896
子进程名称:Process-3,子进程pid:7952
ending....
work3...
work1...
work2...
end work1...
end work2...
end work3...

注:先运行主进程的内容,再运行子进程

(3)将进程定义成一个类

#!/usr/bin/env python# -*- coding:utf-8 -*-# Author:ZhengzhengLiuimport multiprocessingimport time#将进程定义为一个类class ClockProcess(multiprocessing.Process):  def __init__(self,interval):    multiprocessing.Process.__init__(self)   #重构了Process类里面的构造函数    self.interval = interval  def run(self):     #固定用run方法,启动进程自动调用run方法    n = 5    while n>0:      print("The time is {0}".format(time.ctime()))      time.sleep(self.interval)      n-=1if __name__ == "__main__":  p = ClockProcess(2)  p.start()

运行结果:

The time is Wed Nov  1 11:31:28 2017
The time is Wed Nov  1 11:31:30 2017
The time is Wed Nov  1 11:31:32 2017
The time is Wed Nov  1 11:31:34 2017
The time is Wed Nov  1 11:31:36 2017

(4)Queue(队列)实现多进程数据传输

#!/usr/bin/env python# -*- coding:utf-8 -*-# Author:ZhengzhengLiuimport multiprocessing#Queue是多进程安全的队列,可以使用实现多进程之间的数据传递def writer_proc(q):  try:    q.put(1,block=False)    #put方法插入数据到队列中  except:    passdef reader_proc(q):  try:    print(q.get(block=False))    #get方法从队列中读取并删除一个元素  except:    passif __name__ == "__main__":  q = multiprocessing.Queue()  writer = multiprocessing.Process(target=writer_proc,args=(q,))  writer.start()  reader = multiprocessing.Process(target=reader_proc,args=(q,))  reader.start()  reader.join()  writer.join()

运行结果:

1

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python进程与线程操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》、《Python+MySQL数据库程序设计入门教程》及《Python常见数据库操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。


  • 上一条:
    Python爬虫实现爬取百度百科词条功能实例
    下一条:
    Python选择网卡发包及接收数据包
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客