进程之间的通讯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提供了许多函数使我们能够方便高效地进行进程间的通讯,通过这些函数我们可以控制不同进程间的数据交换,就如同 ...
随机推荐
- 【数据库运维】数据库(server)的时区设置及世界主要地区的时区
[时区设置不当会有什么问题] 当进行海外项目运维的时候,常常会遇到时区设置的问题.假设时区设置不当 或者 同样项目的server之间的时区不一致,都会有导致项目的数据异常的风险. 假设数据表的字段使用 ...
- MVC调用函数function.php
<?php //控制器的调用函数C function C($name, $method){ require_once('/libs/controller/'.$name.'Controller. ...
- Handle Refresh Token Using ASP.NET Core 2.0 And JSON Web Token
来源: https://www.c-sharpcorner.com/article/handle-refresh-token-using-asp-net-core-2-0-and-json-web ...
- 2018-12-25-win10-uwp-显示SVG
title author date CreateTime categories win10 uwp 显示SVG lindexi 2018-12-25 10:37:5 +0800 2018-2-13 1 ...
- Java中数组在内存中的存放原理?
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/yangyong0717/article/details/79165685Java中数组被实现为对象, ...
- dd hdparm 速度不一致
https://www.cnblogs.com/yinzhengjie/p/9935478.html hparm # 它用来在基于Linux的系统上获取或设置硬盘参数,包括测试读性能以及缓存性 ...
- ltp-ddt 加入sram 需要修改的部分
./platform/fmxx-psoc-db add sram 将nor部分移植过来 # @name NOR read write test using dd # @desc Perform NOR ...
- springboot cache---本地缓存的使用
使用缓存的几个注解 什么时候需要使用缓存呢?一般是在一个方法的返回值需要被频繁用到.但是返回值很少改变而且执行这个方法会消耗较多的时间,这种情况我们可以考虑将返回值暂时存到内存中,需要时通过对应的唯一 ...
- 关于scikit-learn
机器学习scikit-learn scikit-learn官网学习资料非常丰富,完全可以自学: http://scikit-learn.org/ 目前就以scikit-learn为主要工具学习mach ...
- PHP中什么是数组
PHP 中的数组实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型. 此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集 ...