python 进程 进程池 进程间通信实现解析


Posted in Python onAugust 23, 2019

1.python 中创建进程的两种方式:

from multiprocessing import Process
import time
def test_():
  print '-----test-----'
if __name__ == '__main__':
  p = Process(target=test_)
  p.start()
  while True:
    print '--main--'
    

'''1.通过process 类创建一个进程对象,然后start即可开启进程, test
test_函数是进程实现的功能'''
 
 from multiprocessing import Process
 import time
 class MyNewProcess(Process):
   def run(self):
     print '------run-------'
 if __name__ == '__main__':
   p = MyNewProcess()
   p.start()
   print '---main-----'
 '''2.通过类似继承process  子类中必须有run 方法 里边实现 进程功能 
 创建对象之后 调用start'''

2.进程池

from multiprocessing import Pool
from time import sleep
import os 
def func(num):
  for i in range(3):
    print '%s %s' %(os.getpid(),num) #
    sleep(2)
def main():
  pool = Pool(3)
  for i in range(3, 6):
    res = pool.apply_async(func, (i,))
  pool.close()
  pool.join() 
if __name__ == '__main__':
  main()

3.进程间通信

'''python 进程间通信   Queue '''

'''1.Queue使用方法
  1.Queue.qsize(): 返回当前队列包含的消息数量
  2.Queue.empty(): 如果队列为空 返回True 反之 False
  3.Queue.full(): 如果队列满了返回True 反之 False
  4.Queue.get():  获取队列中一条消息 然后将其从队列中移除 可传参数 超市时长
  Queue.get_nowait(): 相当于 Queue.get(False) 取不到值 触发异常
  Queue.put(): 将一个值添加到数列 可传参数 超时时长
  Queue.put_nowait():相当于 Queue.get(False) 当队列满时 报错
'''
from multiprocessing import Process, Queue
import time
q = Queue() # 创建队列
for i in range(10):
  q.put(i)    
def test_a():
    try:
      while True:
        num = q.get_nowait()
        print '我是进程a 取出数字为:%s'%num
        time.sleep(1)
    except Exception, e:
      print e
def test_b():
  try:
    while True:
      num = q.get_nowait()
      print '我是进程b 取出数字是:%s'%num
      time.sleep(1)
  except Exception, e:
    print e
if __name__ == '__main__':
  p1 = Process(target=test_a)
  p2 = Process(target=test_b)
  p1.start()
  p2.start()

至此 简单得使用已经结束

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中MySQLdb模块用法实例
Nov 10 Python
Windows8下安装Python的BeautifulSoup
Jan 22 Python
用Python进行行为驱动开发的入门教程
Apr 23 Python
Python中方法链的使用方法
Feb 23 Python
Python网络爬虫神器PyQuery的基本使用教程
Feb 03 Python
对python产生随机的二维数组实例详解
Dec 13 Python
python可视化实现代码
Jan 15 Python
使用pyqt5 tablewidget 单元格设置正则表达式
Dec 13 Python
Python argparse模块使用方法解析
Feb 20 Python
Python faker生成器生成虚拟数据代码实例
Jul 20 Python
Python3爬虫带上cookie的实例代码
Jul 28 Python
Python包管理工具pip的15 个使用小技巧
May 17 Python
python实现的生成word文档功能示例
Aug 23 #Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
Aug 23 #Python
详解Matplotlib绘图之属性设置
Aug 23 #Python
python3.6生成器yield用法实例分析
Aug 23 #Python
python基础 range的用法解析
Aug 23 #Python
Django 导出项目依赖库到 requirements.txt过程解析
Aug 23 #Python
Django接收自定义http header过程详解
Aug 23 #Python
You might like
php5.2.0内存管理改进
2007/01/22 PHP
使用php重新实现PHP脚本引擎内置函数
2007/03/06 PHP
php对大文件进行读取操作的实现代码
2013/01/23 PHP
php防止伪造数据从地址栏URL提交的方法
2014/08/24 PHP
thinkphp分页集成实例
2017/07/24 PHP
使用node.js 制作网站前台后台
2014/11/13 Javascript
Angularjs 滚动加载更多数据
2016/03/17 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
2016/06/30 Javascript
javascript设计模式之module(模块)模式
2016/08/19 Javascript
初识简单却不失优雅的Vue.js
2016/09/12 Javascript
详解node-ccap模块生成captcha验证码
2017/07/01 Javascript
vue数据传递--我有特殊的实现技巧
2018/03/20 Javascript
详解基于webpack&gettext的前端多语言方案
2019/01/29 Javascript
layui中select,radio设置不生效的解决方法
2019/09/05 Javascript
Vue中通过vue-router实现命名视图的问题
2020/04/23 Javascript
jquery实现图片放大镜效果
2020/12/23 jQuery
学习python之编写简单乘法口诀表实现代码
2016/02/27 Python
Python批量查询域名是否被注册过
2017/06/21 Python
浅谈django的render函数的参数问题
2018/10/16 Python
情人节快乐! python绘制漂亮玫瑰
2020/08/18 Python
对django后台admin下拉框进行过滤的实例
2019/07/26 Python
Django model 中设置联合约束和联合索引的方法
2019/08/06 Python
Python xlwt模块使用代码实例
2020/06/10 Python
CSS3 animation实现简易幻灯片轮播特效
2016/09/27 HTML / CSS
美国办公用品购物网站:Quill.com
2016/09/01 全球购物
葡萄牙鞋子品牌:Fair
2016/12/10 全球购物
Puma印度官网:德国运动品牌
2019/10/06 全球购物
留学推荐信写作指南
2014/01/25 职场文书
纺织工程专业个人求职信范文
2014/01/27 职场文书
高中体育教学反思
2014/01/29 职场文书
亮剑精神演讲稿
2014/05/23 职场文书
医院领导班子查摆问题对照检查材料思想汇报
2014/10/08 职场文书
党员检讨书
2014/10/13 职场文书
2014年管理工作总结
2014/11/22 职场文书
有关浪费资源的建议书
2015/09/14 职场文书
解决vue-router的beforeRouteUpdate不能触发
2022/04/14 Vue.js