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的Django框架中的QuerySets
Apr 20 Python
django中的setting最佳配置小结
Nov 21 Python
Python机器学习之决策树算法
Dec 22 Python
Python英文文本分词(无空格)模块wordninja的使用实例
Feb 20 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
Apr 28 Python
树莓派安装OpenCV3完整过程的实现
Oct 10 Python
如何在python中写hive脚本
Nov 08 Python
Django框架反向解析操作详解
Nov 28 Python
python 实现一个反向单位矩阵示例
Nov 29 Python
Python3内置函数chr和ord实现进制转换
Jun 05 Python
Python中Permission denied的解决方案
Apr 02 Python
python实现监听键盘
Apr 26 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
PHP 日期时间函数的高级应用技巧
2009/10/10 PHP
一个漂亮的php验证码类(分享)
2013/08/06 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
2015/11/10 PHP
php出租房数据管理及搜索页面
2017/05/23 PHP
PHP微信模板消息操作示例
2017/06/29 PHP
js 弹出框 替代浏览器的弹出框
2010/10/29 Javascript
js 数组去重的四种实用方法
2014/09/09 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
javascript 构造函数方式定义对象
2015/01/02 Javascript
jQuery实现监控页面所有ajax请求的方法
2015/12/10 Javascript
使用javascript插入样式
2016/03/14 Javascript
jquery选择器中的空格与大于号>、加号+与波浪号~的区别介绍
2016/06/24 Javascript
深入解析桶排序算法及Node.js上JavaScript的代码实现
2016/07/06 Javascript
微信小程序 判断手机号的实现代码
2017/04/19 Javascript
页面点击小红心js实现代码
2018/05/26 Javascript
解决vue动态为数据添加新属性遇到的问题
2018/09/18 Javascript
浏览器事件循环与vue nextTicket的实现
2019/04/16 Javascript
微信小程序tab切换可滑动切换导航栏跟随滚动实现代码
2019/09/04 Javascript
vue组件创建的三种方式小结
2020/02/03 Javascript
基于VUE实现判断设备是PC还是移动端
2020/07/03 Javascript
简单了解前端渐进式框架VUE
2020/07/20 Javascript
python爬虫入门教程之糗百图片爬虫代码分享
2014/09/02 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
2017/08/05 Python
Python数据分析之获取双色球历史信息的方法示例
2018/02/03 Python
Pycharm中Python环境配置常见问题解析
2020/01/16 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
2020/03/08 Python
家长给小学生的评语
2014/01/30 职场文书
中国梦我的梦演讲稿
2014/04/23 职场文书
商铺消防安全责任书
2014/07/29 职场文书
机关职员工作检讨书
2014/10/23 职场文书
2014年干部培训工作总结
2014/12/17 职场文书
2015年维修工作总结
2015/04/25 职场文书
职位证明模板
2015/06/23 职场文书
vue实现锚点定位功能
2021/06/29 Vue.js
教你使用Python获取QQ音乐某个歌手的歌单
2022/04/03 Python
Python OpenCV实现图像模板匹配详解
2022/04/07 Python