Python 多进程编程之 进程间的通信(Queue)

1,进程间通信

Process有时是需要通信的,操作系统提供了很多机制来实现进程之间的通信,而Queue就是其中的一个方法

----这是操作系统开辟的一个空间,可以让各个子进程把信息放到Queue中,也可以把自己需要的信息取走

----这就相当于系统给python开辟了一个聊天室,让python创建的子进程可以在这个聊天室里畅所欲言

----一个进程可以放多条消息到Queue中

2,实例

#导入Queue,Process

from multiprocessing import Queue,Process

import os

#写入进程

def wp(q):

print("%s开始写入:"%os.getpid)

for i in "WANG":

#将信息写入队列

q.put(i)

print(i)

#读取进程

def rd(q):

print("%s开始读取"%os.getpid())

while True:

if not q.empty():

#从队列读取信息

print("read to %s"%q.get())

if __name__=="__main__":

#创建队列

q = Queue()

#创建写入进程

w = Process(target=wp,args=(q,))

#启动写入进程

w.start()

#创建读取进程

r = Process(target=rd,args=(q,))

#启动读取进程

r.start()

3,执行结果

1265开始读取

开始写入:

W

A

N

G

read to W

read to A

read to N

read to G

4,进程间通信常用函数

q.Queue()

--------------------------------------------------------

def __init__(self, maxsize=-1):

self._maxsize = maxsize

---- maxsize=-1,表示队列个数无穷大

---- 初始化Queue对象时,(例,q=Queue() )

或括号中没有指定最大可接收的消息数量,或数量为负值,

那么就表示可接收的消息数量没有上限

q.put("信息")

---------------------------------

将信息放入队列中

def put(self, obj, block=True, timeout=None):

pass

obj----传入的信息

block=True----阻塞=真 : 真阻塞(默认值)

timeout=None----等待时间,None(默认值)表示无限等待, 如果timeou设置值,则会等待N秒后,强制放入(put)

q.get()

----------------------------------

def get(self, block=True, timeout=None):

pass

从队列中拿出一个进程消息

block=True 默认值是真阻塞,

timeout=None 意思是  无限,无穷

两个合在一起的意思是  无限阻塞,无穷等待

队列的特点是:先进先出 所以get拿的顺序也是,先进先出 first in first out

q.put_nowait()

-------------------------------------

def put_nowait(self, obj):

pass

相当于q.put(obj,False)

不等待,直接放入

q.get_nowait()

----------------------------------------

def get_nowait(self):

pass

不做等待,就是要获取

如果队列中没有消息,就会报错

----解决报错,加入try 异常处理

q.qsize()

------------------------------------

def qsize(self):

return 0

返回当前队列包含的消息数量

q.full()

------------------------------

检测队列是否已经满了

True: 满

False: 未满

q.empty()

---------------------------------

def empty(self):

return False

检测队列是否为空

True:空

False:未空

python多进程间通信_Python 多进程编程之 进程间的通信(Queue)相关推荐

  1. 网络编程之 进程间的通信之管道的使用

    如何使用管道是进程间通信的关键 博主先声明一下,关于处理进程创建以及销毁的方法.        "子进程究竟何时终止????调用waitpid函数后还要无休止的等待子进程终止吗???&quo ...

  2. python多线程调度_python并发编程之进程、线程、协程的调度原理(六)

    进程.线程和协程的调度和运行原理总结. 系列文章 进程.线程的调度策略介绍 linux中的进程主要有三种调度策略: 优先级调度:将进程分为普通进程和实时进程: 先进先出(队列)调度:实时进程先创建的先 ...

  3. python进程间通信时间开销_python 进程间的通信

    python3,进程间的通信 本文来源于python 3.5版本的官方文档 multiprocessing模块为进程间通信提供了两种方法: 1.进程队列queue The Queue class is ...

  4. python多进程间通信_python多进程间通信代码实例

    python多进程间通信代码实例 这篇文章主要介绍了python多进程间通信代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 这里使用pipe ...

  5. Linux系统编程(三)进程间的通信

    Linux系统编程(三)进程间的通信 一.为什么需要进程之间的通信(IPC)? 二.管道 1.概念 2.特质 3.原理 4.局限性 5.代码 2.读入数据 三.共享存储映射 注意事项 父子进程通信 一 ...

  6. windows核心编程之进程间共享数据

    有时候我们会遇到window进程间共享数据的需求,例如说我想知道系统当前有多少某个进程的实例. 我们能够在程序中定义一个全局变量.初始化为0.每当程序启动后就加1.当然我们我们能够借助第三方介质来储存 ...

  7. 【操作系统】进程间的通信——管道

    进程间的通信-管道 管道 进程间的通信(IPC-Inter-Process Communication)有多种方式,管道是其中最基本的方式. 管道是半双工的,即是单向的. 管道是FIFO(先进先出)的 ...

  8. linux+Qt 下利用D-Bus进行进程间高效通信的三种方式

    linux+Qt 下利用D-Bus进行进程间高效通信的三种方式 原文链接: https://www.cnblogs.com/wwang/archive/2010/10/27/1862552.html ...

  9. 进程间的通信——无名管道

    进程间的通信--无名管道 宗旨:技术的学习是有限的,分享的精神是无限的. 一.进程间的通信 (1)同主机进程间数据交互机制:无名管道(PIPE),有名管道(FIFO).消息队列和共享内存.无名管道多用 ...

最新文章

  1. 使用memcache做web缓存
  2. AI最佳论文都在这里了!(非常全,快领!)
  3. 汇编语言笔记14-端口
  4. .net的label的背景如何设置成为透明_新一轮广告呈现方式变革,新橱窗广告,如何收割注意力经济?...
  5. MPLS ×××实验之OSPF sham-link
  6. 【机器学习】 - 关于Keras的深入理解
  7. 数据中台送到家 企业数字化转型“输血”变“造血”
  8. hiho 第1周 最长回文子串
  9. GitHub一份深度学习资源,包括论文、数据集、课程、图书、博客、教程、框架
  10. 21大软件架构特点的全面解析
  11. time.h中定义的函数
  12. 微信小程序开发教程第五章:微信小程序名片夹详情页开发
  13. 自动基线校正 python_红外光谱的
  14. 鼠标宏设置到鼠标左键,重置回去!
  15. C11 标准下的 C 语言编程
  16. AUTOSAR DCM Configuration
  17. 【算法竞赛学习笔记】佩尔方程-数学提升计划
  18. 科技业界10大最具争议成功决定:苹果iPhone
  19. C语言字符串笔试题含答案
  20. 基于大数据分析的葡萄酒品质鉴别系统设计与实现

热门文章

  1. 【Win】使用L2TP出现809错误
  2. Vim自动补全神器YouCompleteMe的配置
  3. NYOJ-571 整数划分(三)
  4. 博客搬家到 http://fresky.github.io/ - Visual Studio的插件Pdbproj可以把pdb转换成C++项目...
  5. Unicode – CSS中文字体转编码
  6. js实现审批流_小程序瀑布流组件:支持翻页与图片懒加载
  7. 大话数据结构第一章理解
  8. android数据截取字符串数组,android - 从Android Studio中的字符串数组获取特定字符串 - SO中文参考 - www.soinside.com...
  9. 数据库每日一题 2020.05.08
  10. 执行了rm-f,除了跑路,如何恢复?