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


Posted in Python onApril 05, 2019

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

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

进程类:Process

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

示例及代码:

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

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

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:ZhengzhengLiu
import multiprocessing
import time
#创建函数并将其作为单个进程
def worker(interval):
  n = 5    #进程数
  while n>0:
    print("The time is :{0}".format(time.ctime()))   #初始化时间
    time.sleep(interval)    #睡眠时间
    n-=1
if __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:ZhengzhengLiu
import multiprocessing
import 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:ZhengzhengLiu
import multiprocessing
import 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-=1
if __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:ZhengzhengLiu
import multiprocessing
#Queue是多进程安全的队列,可以使用实现多进程之间的数据传递
def writer_proc(q):
  try:
    q.put(1,block=False)    #put方法插入数据到队列中
  except:
    pass
def reader_proc(q):
  try:
    print(q.get(block=False))    #get方法从队列中读取并删除一个元素
  except:
    pass
if __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将html转成PDF的实现代码(包含中文)
Mar 04 Python
简单的Python2.7编程初学经验总结
Apr 01 Python
Python引用传值概念与用法实例小结
Oct 07 Python
实例分析python3实现并发访问水平切分表
Sep 29 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
Nov 10 Python
Python元组常见操作示例
Feb 19 Python
Django 开发环境与生产环境的区分详解
Jul 26 Python
python读文件的步骤
Oct 08 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
Dec 31 Python
使用python-pptx包批量修改ppt格式的实现
Feb 14 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
Jul 07 Python
python爬虫scrapy基本使用超详细教程
Feb 20 Python
Python选择网卡发包及接收数据包
Apr 04 #Python
详解Python的数据库操作(pymysql)
Apr 04 #Python
python dlib人脸识别代码实例
Apr 04 #Python
python图像处理入门(一)
Apr 04 #Python
python爬虫简单的添加代理进行访问的实现代码
Apr 04 #Python
Django项目中添加ldap登陆认证功能的实现
Apr 04 #Python
使用 Python 玩转 GitHub 的贡献板(推荐)
Apr 04 #Python
You might like
我的论坛源代码(八)
2006/10/09 PHP
PHP下对数组进行排序的函数
2010/08/08 PHP
thinkphp中空模板与空模块的用法实例
2014/11/26 PHP
PHP静态成员变量
2017/02/14 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
2019/05/21 PHP
在Laravel 的 Blade 模版中实现定义变量
2019/10/14 PHP
根据分辨率不同,调用不同的css文件
2006/07/07 Javascript
JavaScript入门学习书籍推荐
2008/06/12 Javascript
JavaScript高级程序设计 DOM学习笔记
2011/09/10 Javascript
用Jquery实现滚动新闻
2014/02/12 Javascript
input禁止键盘及中文输入,但可以点击
2014/02/13 Javascript
原生js的数组除重复简单实例
2016/05/24 Javascript
基于JavaScript实现添加到购物车效果附源码下载
2016/08/22 Javascript
利用ES6实现单例模式及其应用详解
2017/12/09 Javascript
js构造函数创建对象是否加new问题
2018/01/22 Javascript
超好用的jQuery分页插件jpaginate用法示例【附源码下载】
2018/12/06 jQuery
微信小程序Flex布局用法深入浅出分析
2019/04/25 Javascript
7个好用的JavaScript技巧分享(译)
2019/05/07 Javascript
微信小程序如何调用图片接口API并居中显示
2019/06/29 Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
2020/06/04 Javascript
详解Django中Request对象的相关用法
2015/07/17 Python
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
python使用Apriori算法进行关联性解析
2017/12/21 Python
用十张图详解TensorFlow数据读取机制(附代码)
2018/02/06 Python
python实现数独游戏 java简单实现数独游戏
2018/03/30 Python
python numpy和list查询其中某个数的个数及定位方法
2018/06/27 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
python 如何读、写、解析CSV文件
2021/03/03 Python
GUESS德国官网:美国牛仔服装品牌
2017/02/14 全球购物
美国最大最全的亚洲购物网站:美国亚米网(Yamibuy)
2020/05/05 全球购物
夜大自我鉴定
2013/10/31 职场文书
世界名著读书笔记
2015/06/25 职场文书
python 对图片进行简单的处理
2021/06/23 Python
不负正版帝国之名 《重返帝国》引领SLG手游制作新的标杆
2022/04/07 其他游戏