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下Fabric的简单部署方法
Jul 14 Python
Python实现生成随机日期字符串的方法示例
Dec 25 Python
python批量设置多个Excel文件页眉页脚的脚本
Mar 14 Python
详解Python下Flask-ApScheduler快速指南
Nov 04 Python
python for循环输入一个矩阵的实例
Nov 14 Python
对python 命令的-u参数详解
Dec 03 Python
Python facenet进行人脸识别测试过程解析
Aug 16 Python
mac使用python识别图形验证码功能
Jan 10 Python
tensorflow的计算图总结
Jan 12 Python
python高级特性简介
Aug 13 Python
python time.strptime格式化实例详解
Feb 03 Python
一行Python命令实现批量加水印
Apr 07 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获取当前页面URL函数实例
2014/10/22 PHP
PHP实现股票趋势图和柱形图
2015/02/07 PHP
详解PHP对象的串行化与反串行化
2016/01/24 PHP
php采集神器cURL使用方法详解
2016/02/19 PHP
php版微信公众平台接口开发之智能回复开发教程
2016/09/22 PHP
浅谈Laravel中的一个后期静态绑定
2017/08/11 PHP
PHP中“=>
2019/03/01 PHP
一些常用弹出窗口/拖放/异步文件上传等实用代码
2013/01/06 Javascript
使用jQuery validate 验证注册表单实例演示
2013/03/25 Javascript
js判断iframe内的网页是否滚动到底部触发事件
2014/03/18 Javascript
js添加select下默认的option的value和text的方法
2014/10/19 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
2015/05/16 Javascript
js实现文本框选中的方法
2015/05/26 Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
2016/05/15 Javascript
详解微信小程序——自定义圆形进度条
2016/12/29 Javascript
vue 2.x 中axios 封装的get 和post方法
2018/02/28 Javascript
vue 根据数组中某一项的值进行排序的方法
2018/08/30 Javascript
代码分析vue中如何配置less
2018/09/28 Javascript
Vue+Spring Boot简单用户登录(附Demo)
2020/11/12 Javascript
python获得一个月有多少天的方法
2015/06/04 Python
python tkinter canvas 显示图片的示例
2019/06/13 Python
python并发爬虫实用工具tomorrow实用解析
2019/09/25 Python
Python单链表原理与实现方法详解
2020/02/22 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
Python实现邮件发送的详细设置方法(遇到问题)
2021/01/18 Python
CSS3中的5个有趣的新技术
2009/04/02 HTML / CSS
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
2016/04/26 HTML / CSS
美国在线购物频道:Shop LC
2019/04/21 全球购物
什么样的创业计划书可行性高?
2014/02/01 职场文书
电大本科自我鉴定
2014/02/05 职场文书
新颖的化妆品活动方案
2014/08/21 职场文书
学习党代会心得体会
2014/09/05 职场文书
2014法制宣传日活动总结范文
2014/11/01 职场文书
同意报考证明
2015/06/17 职场文书
Win11运行育碧游戏总是崩溃怎么办 win11玩育碧游戏出现性能崩溃的解决办法
2022/04/06 数码科技
vue router 动态路由清除方式
2022/05/25 Vue.js