#进程间通讯--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. HTML替换元素,非替换元素和控制元素

    替换元素:元素内容由标签的属性来设置,标签其实就是一个占位符.替换元素因为元素内容来自外部资源,所以这些标签大多具有src,指明要引入的资源路径,所以大多仅需要一个标签就可以.例如:<link ...

  2. 线程局部变量ThreadLocal实现原理

    ThreadLocal,即线程局部变量,用来为每一个使用它的线程维护一个独立的变量副本.这种变量只在线程的生命周期内有效.并且与锁机制那种以时间换取空间的做法不同,ThreadLocal没有任何锁机制 ...

  3. [web 安全] 源码泄露

    web 源码泄露 1..hg 源码泄露 http://www.example.com/.hg/ 2..git 源码泄露 http://www.example.com/.git/config 3..ds ...

  4. ThinkPhp view 路径用到的常量 __STATIC__ __JS__ __CSS__等

    https://www.edoou.com/articles/1556848583530922 ThinkPHP5.1 里面__PUBLIC__无法生效的问题 在用PHP模板的时候需要引用外部的样式文 ...

  5. 左右flex布局

    修复版本

  6. js执行上下文与执行上下文栈

    一.什么是执行上下文 简单说就是代码运行时的执行环境,必须是在函数调用的时候才会产生,如果不调用就不会产生这个执行上下文.在这个环境中,所有变量会被事先提出来(变量提升),有的直接赋值,有的为默认值 ...

  7. NIO拷贝

  8. 图片没有.png或者jpg后缀能不能加载?

    是可以的,如:http://mmbiz.qpic.cn/mmbiz_png/MW1VecOrnw6HUMvEUNUxibLVtbY2vHF8QkFyviaickh8pnsapQ8gOosdq13SBX ...

  9. 4,fail-fast错误机制

    一,fail-fast简介 在JDK的Collection中我们时常会看到类似于这样的话: ArrayList 注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出 ...

  10. android 6.0适配(总结)

    6.0的适配主要是权限: 权限的分组: 普通权限:也就是正常权限,是对手机的一些正常操作,对用户的隐私没有太大影响的权限,比如手机的震动,网络访问,蓝牙等权限,这些权限会在应用被安装的时候默认授予,用 ...