1、作用:进程之间的数据交互

2、常用方法

"""
对象.put()
作用:放入队列一个数据
对象.get()
作用:取队列一个数据,若队列没有值,则阻塞
对象.empty()
作用:判断队列是否为空
对象.full()
作用:判断队列是否为满 """

3、例子

"""
子进程Process-1 和 子进程Process-2进行数据传输
"""
from multiprocessing import Queue
from multiprocessing import Process def new_put(q):
q.put('你好') def new_get(q):
ret = q.get()
print(ret) if __name__ == '__main__':
q = Queue()
p = Process(target=new_put, args=(q, ))
p.start()
print(p.name)
g = Process(target=new_get, args=(q, ))
g.start()
print(g.name)

4、生产者消费者模型

import time
import random
from multiprocessing import Process
from multiprocessing import Queue def producer(name, food, q):
for i in range(6):
f = '%s生产%s%s' % (name,food, i)
print(f)
time.sleep(random.randint(1, 3))
q.put(f) def consumer(name, q):
while 1:
f1 = q.get()
if f1 is None:
break
f = '********************%s吃%s' % (name, f1)
print(f)
time.sleep(random.randint(1, 2)) if __name__ == '__main__':
q = Queue()
p = Process(target=producer, args=('tom', '包子', q))
p.start()
p2 = Process(target=producer, args=('joker', '馒头', q))
p2.start()
c1 = Process(target=consumer, args=('wt', q))
c1.start()
c2 = Process(target=consumer, args=('son', q))
c2.start()
p.join()
p2.join()
q.put(None)
q.put(None)

优化

import time
import random
from multiprocessing import Process
from multiprocessing import JoinableQueue def producer(name, food, q):
for i in range(6):
f = '%s生产%s%s' % (name,food, i)
print(f)
time.sleep(random.randint(1, 3))
q.put(f)
q.join() def consumer(name, q):
while 1:
f1 = q.get()
f = '********************%s吃%s' % (name, f1)
print(f)
time.sleep(random.randint(1, 2))
q.task_done() if __name__ == '__main__':
q = JoinableQueue() p = Process(target=producer, args=('tom', '包子', q))
p.start()
p2 = Process(target=producer, args=('joker', '馒头', q))
p2.start()
c1 = Process(target=consumer, args=('wt', q))
c1.daemon = True
c1.start()
c2 = Process(target=consumer, args=('son', q))
c2.daemon = True
c2.start()
p.join()
p2.join()

过程:主进程等待->生产者进程,生产者等待->消费者
p.join()->q.join()->c,task_down()
obj.join()
作用:阻塞,直到队列里的所有值被处理,一般在生产者进程中和put()方法一起使用
obj.task_down()
作用:向q.join()发送信号量,表名q.get()的值,已经被处理
注意:给消费者设置守护进程,队列的数据处理完毕后,消费者再执行下去,没有意义

python 进程Queue的更多相关文章

  1. Python开发【笔记】:what?进程queue还能生产出线程!

    进程queue底层用线程传输数据 import threading import multiprocessing def main(): queue = multiprocessing.Queue() ...

  2. python 进程和线程

    python中的进程.线程(threading.multiprocessing.Queue.subprocess) Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就 ...

  3. Python 进程

    安装Python的paramiko模块 步骤: 1:管理员方式打开cmd,切换到python安装路径的Scripts目录下: 2:执行命令: 1 pip3.5.exe install paramiko ...

  4. python进程、线程、协程(转载)

    python 线程与进程简介 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资 ...

  5. Python进程、线程、协程详解

    进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配.任务的调度. ...

  6. python——进程、线程、协程

    Python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/usr/bin/env pytho ...

  7. Python 进程之间共享数据

    最近遇到多进程共享数据的问题,到网上查了有几篇博客写的蛮好的,记录下来方便以后查看. 一.Python multiprocessing 跨进程对象共享  在mp库当中,跨进程对象共享有三种方式,第一种 ...

  8. Python 进程间数据交互

    进程间通信:进程之间必须需要中间件. 不同进程间内存是不共享的,要想实现两个进程间的数据交换     Queues:实现传输两个进程的数据 线程queue,访问数据只能在一个进程内进行线程与线程之间的 ...

  9. Python中Queue模块及多线程使用

    Python的Queue模块提供一种适用于多线程编程的FIFO实现.它可用于在生产者(producer)和消费者(consumer)之间线程安全(thread-safe)地传递消息或其它数据,因此多个 ...

随机推荐

  1. Java中的断言assert的用法

    Java陷阱之assert关键字 一.概述 在C和C++语言中都有assert关键,表示断言. 在Java中,同样也有assert关键字,表示断言,用法和含义都差不多. 二.语法 在Java中,ass ...

  2. linux 内核协助的探测

    Linux 内核提供了一个低级设施来探测中断号. 它只为非共享中断, 但是大部分能够在共 享中断状态工作的硬件提供了更好的方法来尽量发现配置的中断号.这个设施包括 2 个函 数, 在<linux ...

  3. VSCode提示没有权限,无法保存文件问题

    重装了系统之后,重新打开了VSCode发现无法保存修改的文件,激活系统后发现还是无法保存文件,都是提示权限问题,原因在于文件夹权限继承并不是我所登录的这个用户,接着我试着按照网上的方法,在文件夹后,右 ...

  4. 【Ubuntu】16.04网卡信息配置

    ①查看操作系统版本信息: ②查看网卡信息 输入ifconfig命令查看网卡信息,下图enp0s25就是网卡名称. ifconfig ③配置网卡文件 注意:不同的linux系统,网卡配置文件是不同的,这 ...

  5. 聊聊多线程那一些事儿 之 五 async.await深度剖析

     hello task,咱们又见面啦!!是不是觉得很熟读的开场白,哈哈你哟这感觉那就对了,说明你已经阅读过了我总结的前面4篇关于task的文章,谢谢支持!感觉不熟悉的也没有关系,在文章末尾我会列出前四 ...

  6. 计算机专业如何高质量的走完大学四年?毕业成为Offer收割机

    前言:迷茫本就是青春该有的模样,但不要让未来的你讨厌现在的自己. "就要毕业了. 回头看自己所谓的大学生活, 我想哭,不是因为离别,而是因为什么都没学到. 我不知,简历该怎么写,若是以往我会 ...

  7. redis集群数据迁移txt版

    ./redis-trib.rb create --replicas 1 192.168.112.33:8001 192.168.112.33:8002 192.168.112.33:8003 192. ...

  8. 【题解】P4841 城市规划(指数型母函数+多项式Ln)

    [题解]P4841 城市规划 P4841 城市规划 超级弱化版本(DP):POJ - 1737 两张图不同当且仅当边的分布不一样的时候,带编号最后乘一个阶乘即可,现在最主要的问题就是"联通& ...

  9. 极光推送SDK通过泰尔终端实验室检测,符合统一推送接口标准

    1月7日,中国深圳--国内领先的开发者服务提供商极光(Aurora Mobile, NASDAQ:JG)宣布其旗下产品极光推送SDK通过中国信息通信研究院泰尔终端实验室的检测,其性能和接口标准符合统一 ...

  10. 小小知识点(十八)U盘中病毒了,System Volume Information文件夹删除不掉

    win+R调出命令窗口后搜索cmd,启用cmd命令编辑器,并输入以下命令: attrib "H:\System Volume Information" -s   //这句话可以选择 ...