进程之间的通讯Queue简单应用
#进程间通讯--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简单应用的更多相关文章
- 结合process进程,实现进程之间的通讯Queue,稍微复杂的运用
#在父进程中创建两个子进程,一个往Queue写数据,一个从Queue里读数据 from multiprocessing import Queue,Process import time,random ...
- 两个进程之间的通讯——pipe 管道
在实际工作中,已经编辑好了NIPT_analysis的软件,该软件一般的输入文件是sam文件,但是为了集成进入测序仪器,需要直接从比对软件的标准输出中读取sam文件,省去了比对软件和NIPT_anal ...
- python 进程之间的通讯
python 进程之间的通讯 #!/usr/bin/env python #-*- coding:utf-8 -*- # author:leo # datetime:2019/5/28 10:15 # ...
- 【转】C++ 进程间的通讯(一):简单的有名管道实现
原文: C++ 进程间的通讯(一):简单的有名管道实现 -------------------------------------------------- 进程间的通讯(一):简单的有名管道实现 ...
- python进程之间的通信——Queue
我们知道进程之间的数据是互不影响的,但有时我们需要在进程之间通信,那怎么办呢? 认识Queue 可以使用multiprocessing模块的Queue实现多进程之间的数据传递,Queue本身是一个消息 ...
- 结合Pool进程池进程,实现进程之间的通讯,稍微复杂的运用
#进程池中的Queue """ 如果要用Pool创建进程,就需要multiprocessing.Manager()中的Queue() 而不是multiprocessing ...
- 研究Electron主进程、渲染进程、webview之间的通讯
背景 由于某个Electron应用,需要主进程.渲染进程.webview之间能够互相通讯. 不过因为Electron仅提供了主进程与渲染进程的通讯,没有渲染进程之间或渲染进程与webview之间通讯的 ...
- IPC进程之间通信的几种方式
概念 进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是 共享内存区 .但是,系统空间却是 ...
- [转]WINDOW进程间数据通讯以及共享内存
1.引言 在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯.WIN32 API提供了许多函数使我们能够方便高效地进行进程间的通讯,通过这些函数我们可以控制不同进程间的数据交换,就如同 ...
随机推荐
- vue 使用jssdk分享
背景 在vue中使用jssdk微信分享 weixin-js-sdk mint-ui需要安装npm install weixin-js-sdk mint-ui --save mixins/wechat. ...
- 2019牛客暑期多校训练营(第五场) - C - generator 2 - BSGS
https://ac.nowcoder.com/acm/contest/885/C 这个跟平时那种求离散对数的bsgs不一样,虽然可以转化成离散对数来做不过会T掉.展开递推式然后合并具有a的项,发现其 ...
- Codeforces - 1198D - Rectangle Painting 1 - dp
https://codeforces.com/contest/1198/problem/D 原来是dp的思路,而且是每次切成两半向下递归.好像在哪里见过类似的,貌似是紫书的样子. 再想想好像就很显然的 ...
- mysql自动备份脚本
linux系统mysql5.6版本实现自动备份步骤 1.sudo mysql --help | grep my.cnf 查找my.cnf文件2.在文件中添加如下行实现免输入密码[mysqldump]u ...
- Neo4j : 通过节点的 id属性 对节点进行查,改,删操作
1. "查"操作 , 查找 id 属性 为 501的节点: MATCH (r) WHERE id(r) = 501 RETURN r 2. "改"操作, 更改 ...
- Aurora测试----随机数字产生
在xilinx模板中,存在一个Aurora样本工程,包含众多的子函数,本系列本文将逐一对其进行解析,首先是aurora_8b10b_0_FRAME_GEN函数,根据官方的说明,其作用是:该模块是一个模 ...
- EPROCESS ETHREAD PEB重要成员
-----------------------------------------------------------------------win7 x86中-------------------- ...
- AspNetCore使用MySQL
既然NetCore开源,那么也使用开源的MySQL的数据库呢?当然NetCore不止单单配MSSQL数据库而已.今天我来讲解NetCore怎么使用MySQL进行开发. 首先新建一个NetCore项目 ...
- javaScript基础--概念以及使用
1.什么javascript? 为什么要学习? 处理网站动态特效 为后期课程打基础 什么是javascript? 是一个客户端的具有安全性的脚本语言. js和h5 的关系 : 都是向静态的元素动起来 ...
- 2019-4-21-Roslyn-通过-NuGet-库修改应用程序入口函数
title author date CreateTime categories Roslyn 通过 NuGet 库修改应用程序入口函数 lindexi 2019-4-21 17:37:1 +0800 ...