#进程间通讯--Queue
#Process有时需要通信的,操作系统提供了很多机制来实现进程之间的通讯
#而Queue就是其中一个 #1.Queue的使用
#可以使用multiprocessing模块下的Queue实现多进程之间的数据传递,
#Queue本身就是一个消息队列 from multiprocessing import Queue #每个进程都可以和消息队列对话和拿东西(读取信息)
if __name__ == "__main__":
#有三个空间 可以循环使用
#初始化一个Queue对象,最多可以读取三条消息
#一个进程可以放多条消息到Queue中
#-1或者不写 表示消息队列无穷大
q = Queue(3) #放消息
q.put('消息1')
q.put('消息2')
#判断消息队列是否已满
print(q.full())
# q.put('消息3')
print(q.full()) if q.full():#满了 True 未满false
print('消息队列已经满了,不要再放了')
else:
q.put('消息N') # 如果消息队列已经满了,我还接着put,会发生什么?
# 消息4在外面等着 阻塞
#如果已经满了 默认后面是阻塞的
# q.put('消息4')#q.put("消息4",True,None)
try:
q.put('消息4',False)#不阻塞 报错
except:
print('消息队列已满,现在消息数量:%d'%q.qsize())
try:
#阻塞两秒
q.put('消息4',True,2)
except:
print('消息队列已满,现在消息数量:%d'%q.qsize()) # try:
# q.put('消息4', True)#一直等
# except:
# print('消息队列已满,现在消息数量:%d' % q.qsize()) #实战代码
if not q.full():
# q.put('消息内容',False)
q.put_nowait('消息内容')
from multiprocessing import Queue
# 获取消息
q1 = Queue(3)
q1.put('A')
q1.put('B')
q1.put('C') print(q1.get())
print(q1.get())
print(q1.get())
#如果不知道里面有多少消息数量 可以用下面的方法全部拿出消息
# count = q1.qsize()
# if not q1.empty():
# for i in range(count):
# # 队列的特点是:先进先出--first in first out
# # print(q1.get())
# print(q1.get_nowait())
print('over!') """
说明:
1.初始化Queue对象时(例如: q = Queue()),
或者括号中没有指定的最大可接收的消息数量,或数量为负值,
那么就表示可接收消息数量没有上线,(直到内存尽头)
2.常用函数
(1)q.qsize() 返回当前队列包含的消息数量
(2)q.full() 表示当前队列是否已经满了 True -满了 False -未满
(3)q.empty()表示当前队列是否为空,True--空,False--未空 --脾气温和类型的,有耐心的
(4)q.put(消息,block=True,timeout=None)
(5)q.get(block=True,timeout=None)
block(默认True)--阻塞(停在put状态),直接put进去为止
timeout(默认None)--一直等,如果设置timeout,则会等待N秒,然后强制put --脾气暴躁类型,砸场子的.
(6)q.put_nowait()--相当于q.put(消息,False)
(7)q.get_nowait()--相当于q.get(False)
"""

进程之间的通讯Queue简单应用的更多相关文章

  1. 结合process进程,实现进程之间的通讯Queue,稍微复杂的运用

    #在父进程中创建两个子进程,一个往Queue写数据,一个从Queue里读数据 from multiprocessing import Queue,Process import time,random ...

  2. 两个进程之间的通讯——pipe 管道

    在实际工作中,已经编辑好了NIPT_analysis的软件,该软件一般的输入文件是sam文件,但是为了集成进入测序仪器,需要直接从比对软件的标准输出中读取sam文件,省去了比对软件和NIPT_anal ...

  3. python 进程之间的通讯

    python 进程之间的通讯 #!/usr/bin/env python #-*- coding:utf-8 -*- # author:leo # datetime:2019/5/28 10:15 # ...

  4. 【转】C++ 进程间的通讯(一):简单的有名管道实现

    原文: C++ 进程间的通讯(一):简单的有名管道实现 -------------------------------------------------- 进程间的通讯(一):简单的有名管道实现   ...

  5. python进程之间的通信——Queue

    我们知道进程之间的数据是互不影响的,但有时我们需要在进程之间通信,那怎么办呢? 认识Queue 可以使用multiprocessing模块的Queue实现多进程之间的数据传递,Queue本身是一个消息 ...

  6. 结合Pool进程池进程,实现进程之间的通讯,稍微复杂的运用

    #进程池中的Queue """ 如果要用Pool创建进程,就需要multiprocessing.Manager()中的Queue() 而不是multiprocessing ...

  7. 研究Electron主进程、渲染进程、webview之间的通讯

    背景 由于某个Electron应用,需要主进程.渲染进程.webview之间能够互相通讯. 不过因为Electron仅提供了主进程与渲染进程的通讯,没有渲染进程之间或渲染进程与webview之间通讯的 ...

  8. IPC进程之间通信的几种方式

    概念 进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是 共享内存区 .但是,系统空间却是 ...

  9. [转]WINDOW进程间数据通讯以及共享内存

    1.引言 在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯.WIN32 API提供了许多函数使我们能够方便高效地进行进程间的通讯,通过这些函数我们可以控制不同进程间的数据交换,就如同 ...

随机推荐

  1. vue 使用jssdk分享

    背景 在vue中使用jssdk微信分享 weixin-js-sdk mint-ui需要安装npm install weixin-js-sdk mint-ui --save mixins/wechat. ...

  2. 2019牛客暑期多校训练营(第五场) - C - generator 2 - BSGS

    https://ac.nowcoder.com/acm/contest/885/C 这个跟平时那种求离散对数的bsgs不一样,虽然可以转化成离散对数来做不过会T掉.展开递推式然后合并具有a的项,发现其 ...

  3. Codeforces - 1198D - Rectangle Painting 1 - dp

    https://codeforces.com/contest/1198/problem/D 原来是dp的思路,而且是每次切成两半向下递归.好像在哪里见过类似的,貌似是紫书的样子. 再想想好像就很显然的 ...

  4. mysql自动备份脚本

    linux系统mysql5.6版本实现自动备份步骤 1.sudo mysql --help | grep my.cnf 查找my.cnf文件2.在文件中添加如下行实现免输入密码[mysqldump]u ...

  5. Neo4j : 通过节点的 id属性 对节点进行查,改,删操作

    1. "查"操作 , 查找 id 属性 为 501的节点: MATCH (r) WHERE id(r) = 501 RETURN r 2. "改"操作, 更改 ...

  6. Aurora测试----随机数字产生

    在xilinx模板中,存在一个Aurora样本工程,包含众多的子函数,本系列本文将逐一对其进行解析,首先是aurora_8b10b_0_FRAME_GEN函数,根据官方的说明,其作用是:该模块是一个模 ...

  7. EPROCESS ETHREAD PEB重要成员

    -----------------------------------------------------------------------win7 x86中-------------------- ...

  8. AspNetCore使用MySQL

    既然NetCore开源,那么也使用开源的MySQL的数据库呢?当然NetCore不止单单配MSSQL数据库而已.今天我来讲解NetCore怎么使用MySQL进行开发. 首先新建一个NetCore项目 ...

  9. javaScript基础--概念以及使用

    1.什么javascript? 为什么要学习? 处理网站动态特效 为后期课程打基础 什么是javascript? 是一个客户端的具有安全性的脚本语言. js和h5 的关系 :  都是向静态的元素动起来 ...

  10. 2019-4-21-Roslyn-通过-NuGet-库修改应用程序入口函数

    title author date CreateTime categories Roslyn 通过 NuGet 库修改应用程序入口函数 lindexi 2019-4-21 17:37:1 +0800 ...