queue.Queue和multiprocessing.Queue队列的区别

文章目录

  • queue.Queue和multiprocessing.Queue队列的区别
  • 前言
  • 一、明显的区别
  • 二、queue.Queue是进程内非阻塞队列?
    • 1.引入库
  • 写在结尾

前言

关于这两个队列的区别我在网上搜到结果如下:
Python multiprocessing.Queue() 和 queue.Queue区别
1、queue.Queue是进程内非阻塞队列
2、multiprocessing.Queue是跨进程通信队列
3、多进程前者是各自私有,后者是各子进程共有
4、pickle对传入对象的要求是不能是内部类,也不能是lambda函数(仅针对multiprocessing.Queue()

但通过我自己的实践后发现第一条好像并不成立,以下部分是我经过实践后的结果


一、明显的区别

1.queue.Queue是进程内的用的队列,也就是多线程
2.multiprocessing.Queue是跨进程通信队列,也就是多进程
所以在我们可以明确他们这个区别(线程进程不懂的请自行百度)

二、queue.Queue是进程内非阻塞队列?

1.引入库

代码如下(示例):

import time
from queue import Queue
import mythreadclass thread_test():def __init__(self):self.q = Queue(5)  #创建队列# self.print_thread() #开启现场def mprintnum(self):     #创建打印函数while True:value = self.q.get()    #因为这里是阻塞式的,所以程序会在这里阻塞,线程也就会挂起print("the is test")print(value)time.sleep(0.1)def print_thread(self):      #创建打印线程t1 = mythread.MyThread(target=self.mprintnum)t1.start()def mrange(self,):for num in range(15):if not self.q.full():self.q.put(num)     #这里的写入是阻塞式的,写入之前最好判断一下队列有没有满print("test")me = thread_test()
me.mrange()

运行结果:


```python
C:\Users\Administrator\AppData\Local\Programs\Python\Python310\python.exe D:/pythonproject/Queuetest.py
test
test
test
test
testProcess finished with exit code 0

从上面的打印我们可以看出,这个当队列满了以后我们再往队列中写入数据,就会在写入这个位置阻塞住,从队列获取数据也是如此,当队列为空时,取数据会阻塞住。从现象看来queue.Queue并不是进程内的非阻塞队列,应该是进程内的阻塞队列吧?关于这点我不明白,别人为什么这么写,希望有知道的大佬能指点下,感谢!


写在结尾

我是一名车载集成测试开发工程师,希望能和志同道合的朋友一起相互学习进步

queue.Queue和multiprocessing.Queue队列的区别相关推荐

  1. python 进程间通信效率_Python进程间通信 multiProcessing Queue队列实现详解

    一.进程间通信 IPC(Inter-Process Communication) IPC机制:实现进程之间通讯 管道:pipe 基于共享的内存空间 队列:pipe+锁的概念--->queue 二 ...

  2. python 多进程 multiprocessing.Queue()报错:The freeze_support() line can be omitted if the program

    运行以下多进程测试代码时报错: # -*- coding: utf-8 -*- """ @File : test_191205_测试多进程Multiprocessing_ ...

  3. c++ STL:队列queue、优先队列priority queue 的使用

    说明:本文全文转载而来,原文链接:http://www.cppblog.com/wanghaiguang/archive/2012/06/05/177644.html C++ Queues(队列) C ...

  4. tp5 queue.php,tp5(think-queue)消息队列+supervisor进程管理实现队列常驻进程

    前言 传统的程序执行流程一般是 即时|同步|串行的,在某些场景下,会存在并发低,吞吐量低,响应时间长等问题.在大型系统中,一般会引入消息队列的组件,将流程中部分任务抽离出来放入消息队列,并由专门的消费 ...

  5. 队列queue(2):链表实现队列

    基本概念 队列是只允许在一端进行插入操作,另一端进行删除操作的线性表. 我们规定,允许删除的叫做队首"head",允许插入的叫做队尾"tail". 基本操作 我 ...

  6. python queue get 方法_Python Queue模块详解

    Python3.5中,队列是线程间最常用的交换数据的形式.Queue模块是提供队列操作的模块,虽然简单易用,但是不小心的话,还是会出现一些意外. 创建一个"队列"对象 import ...

  7. python queue模块安装_Python -- Queue模块

    学习契机 最近的一个项目中在使用grpc时遇到一个问题,由于client端可多达200,每个端口每10s向grpc server发送一次请求,server端接受client的请求后根据request信 ...

  8. python queue的用法_python Queue模块使用

    Python中,队列是线程间最常用的交换数据的形式.Queue模块是提供队列操作的模块,虽然简单易用,但是不小心的话,还是会出现一些意外. 创建一个"队列"对象 import Qu ...

  9. laravel queue java_使用 Laravel Queue 不得不明白的知识

    背景 首先说一下我写这篇文章的初衷,在我们打算使用 Laravel Queue 的时候,你的首选应该是去看文档,但是无奈 Laravel 的文档很多地方写得太简单,有时候想了解一个深入的问题,不得不去 ...

最新文章

  1. R语言配对图可视化:配对图(pair plot)可视化(根据分类变量的值为散点图上的数据点添加颜色和形状、Add color and shape by variables)
  2. 惠普企业第三财季净利润23亿美元 同比增长914%
  3. 非索引查询如何提高效率_Python数据分析:数据库索引如何提高效率?
  4. 一文读懂HTTP/2及HTTP/3特性
  5. navicat premium 链接postgresql 无法加载表_PostgreSQL 每周新闻 2020311
  6. JQuery $作用
  7. 热血江湖战无止境与服务器连接不稳定,《热血江湖》V14.0“战无止境”新版玩不停...
  8. php include的路径问题,php7中include有相对路径无法打开
  9. python装饰器 廖雪峰_python装饰器的一个妙用
  10. 强连通分量(Tarjan算法)
  11. 黑马程序员——从迷茫的大学认识黑马
  12. ThinkPad T440屏幕关闭之后硬盘狂响的解决方案
  13. 小波变换复习 (Review on Wavelet Transform)
  14. 最大化偏差问题与Double Q-Learning(一)——最大化偏差问题介绍
  15. 复旦大学计算机学院教师简介,复旦大学计算机科学技术学院导师教师师资介绍简介-危辉...
  16. C语言课设分享:图片加载
  17. 可持续的、可植入的电子产品更近了一步
  18. 【已解决】彻底修改Tomcat9 控制台 中文乱码问题
  19. 【IT人生】写给今天的初学者,明天的领航人
  20. 85条高级AutoCAD工程师绘图技巧­

热门文章

  1. WASC Threat Classification 安全威胁分类
  2. python win32处理Excel(方法篇)
  3. 图像处理---高斯滤波
  4. Mac下设置idea的代码提示快捷键
  5. Hutool工具类之excel导入导出
  6. Latex写文章时插入单栏图片和双栏图片方法
  7. GotW#63 狂乱的代码
  8. Java实例教程(上)
  9. windows10系统-11-高效软件
  10. 机械键盘各种轴的特点