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中使用base64模块处理字符编码的教程
Apr 28 Python
在Django的URLconf中进行函数导入的方法
Jul 18 Python
python各种语言间时间的转化实现代码
Mar 23 Python
Python定义一个跨越多行的字符串的多种方法小结
Jul 19 Python
Django migrations 默认目录修改的方法教程
Sep 28 Python
python  Django中的apps.py的目的是什么
Oct 15 Python
PyTorch 1.0 正式版已经发布了
Dec 13 Python
如何使用python把ppt转换成pdf
Jun 29 Python
全面了解django的缓存机制及使用方法
Jul 22 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
Aug 08 Python
django 通过url实现简单的权限控制的例子
Aug 16 Python
python boto和boto3操作bucket的示例
Oct 30 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的面向对象编程
2006/10/09 PHP
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
2014/08/19 PHP
PHP错误机制知识汇总
2016/03/24 PHP
php使用变量动态创建类的对象用法示例
2017/02/06 PHP
php获取给定日期相差天数的方法分析
2017/02/20 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
浅谈Laravel队列实现原理解决问题记录
2017/08/19 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
2019/07/20 PHP
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
jQuery构造函数init参数分析续
2015/05/13 Javascript
Bootstrap实现基于carousel.js框架的轮播图效果
2017/05/02 Javascript
jQuery初级教程之网站品牌列表效果
2017/08/02 jQuery
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
基于vue.js实现的分页
2018/03/13 Javascript
实例介绍JavaScript中多种组合继承
2019/01/20 Javascript
9种方法优化jQuery代码详解
2020/02/04 jQuery
把项目从Python2.x移植到Python3.x的经验总结
2015/04/20 Python
python中getaddrinfo()基本用法实例分析
2015/06/28 Python
基于python实现微信模板消息
2015/12/21 Python
Linux中Python 环境软件包安装步骤
2016/03/31 Python
图解Python变量与赋值
2018/04/03 Python
java中的控制结构(if,循环)详解
2019/06/26 Python
使用python脚本自动创建pip.ini配置文件代码实例
2019/09/20 Python
django框架auth模块用法实例详解
2019/12/10 Python
python实现tail实时查看服务器日志示例
2019/12/24 Python
Python使用py2neo操作图数据库neo4j的方法详解
2020/01/13 Python
使用python matplotlib 画图导入到word中如何保证分辨率
2020/04/16 Python
python openCV自制绘画板
2020/10/27 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
2020/11/15 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
2021/02/22 Python
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
导游词范文
2015/02/13 职场文书
餐厅收银员岗位职责
2015/04/07 职场文书
咖啡厅里的创业计划书
2019/08/21 职场文书
Elasticsearch6.2服务器升配后的bug(避坑指南)
2022/09/23 Servers