Discuss / Python / 队列问题

队列问题

Topic source

Mr_RightMen

#1 Created at ... [Delete] [Delete and Lock User]

老师,为什么这里用的是import queue 而不是用的from multiprocess import Queue,这两个模块有什么区别呢

1、不会的先百度 2、好好的看一下基础知识,廖哥的东西很经典,需要基础牢固才能慢慢品味 3、回答一下你的问题: 使用import 模块名 是导入该模块,该模块下所有的方法都可以使用 使用规范: 模块名.方法名 from 模块名 import 函数名 是导入该模块下的特定的函数名,使用时直接使用函数名。 eg: import math print(math.pi)

from math import sqrt print(sqrt(2, 3))

@海上有个树荫_hhh 1.你说的都没错,但是我想说的是,不懂就问也是一种学习方法,因为既然你已经打算要问了,说明这个问题你是经过大脑并且思考过以后,发现搞不定了才决定问人的,而且这种不懂就问的方法对于解决问题的效率要高的多,因为有人直接针对你提出的问题作出相应的解答,并且这个解答可以立马见效,何乐而不为? 2.你说的“不会的先百度”,很正确,如果你是个在校生有充裕的时间,你可以慢慢的再百度上找你想要的答案,但是从百度上找寻答案的过程有的时候是一个很痛苦的过程,因为搜索你问题的关键字得到的往往并不是你想要的答案,有时候还解决不了你的问题,但是却耗费了大量的时间在找答案这一过程上,如果领导让你在一天内实现某个需求,在制作的过程中遇到了一个棘手的问题卡住了你的进度,你花费了一下午的时间在百度上到处找答案,留言,还是没有解决掉你的问题,如果此时有大牛一针见血的指出你问题的所在,是不是就能帮你节约很多时间呢? 3.“好好的看一下基础知识”,题主能够在这里出现,并且提出了这样一个问题,我敢说题主也是从基础部分一点点认真的看着廖大的教程过来的,他提的这个问题,至少我在廖大之前的教程中,是没有见有讲解过import queue 与 from multiprocess import Queue 的区别在哪,然后廖大在此节中就直接这么用了,换做任何一个零基础的同学都会一脸懵逼,当然,如果你是有基础的,当我没说(我也看的出来,你是学过Python的)。

H_Vergil

#4 Created at ... [Delete] [Delete and Lock User]

@海上有个树荫_hhh 会不会是你有点理解错了...... 我感觉他问的应该不是import和from...import...的区别的问题 而是queue这个模块和multiprocess下的Queue的区别... 在知乎上有解答我这里贴一下吧(不过的确这个真的是百度搜索了一下“multiprocess queue”就找到了) 1.from Queue import Queue这个是普通的队列模式,类似于普通列表,先进先出模式,get方法会阻塞请求,直到有数据get出来为止 2.from multiprocessing.Queue import Queue这个是多进程并发的Queue队列,用于解决多进程间的通信问题。普通Queue实现不了。例如来跑多进程对一批IP列表进行运算,运算后的结果都存到Queue队列里面,这个就必须使用multiprocessing提供的Queue来实现 https://www.zhihu.com/question/30459454

@H_Vergil hi,萌新想请教一下, import queue 和 from Queue import Queue 是一样的吗? 看题主问的是 import queue,没有加 from Queue。 廖大也是直接就 import queue,而不是写作 from Queue import Queue。

千羽王爵

#6 Created at ... [Delete] [Delete and Lock User]

@用户3229353851: 应该是python2 和 3的版本问题,以下是我在慕课网看到的,看样子是把模块名首字母大写了,也不知道为什么这么改动: # Python2.x from Queue import Queue

# Python3.x import queue

# Python2.x q = Queue() # Python3.x q = queue.Queue()

# 存储一个元组到Queue中 q.put((1, 'a'))

# q.get()每次获取一个数据,使用下面这种方式可以直接拆分元组 int_data, str_data = q.get()

作者: 秋名山车神 链接:https://www.imooc.com/article/16198 来源:慕课网 本文原创发布于慕课网 ,转载请注明出处,谢谢合作

可以查看python的文档来知道答案: 下面是queue模块中的说明,可以看到里面有queue.Queue

The queue module implements multi-producer, multi-consumer queues. It is especially useful in threaded programming when information must be exchanged safely between multiple threads. The Queue class in this module implements all the required locking semantics. It depends on the availability of thread support in Python; see the threading module.

下面是multiprocessing模块中关于进程间两种通信通道(QueuesPipes)的描述

The Queue class is a near clone of queue.Queue.

由此,可以看到这个Queue类来自两个模块,只不过它俩几乎一样!而明显文中给的例子是来自前者。

大晨紫Zzz

#8 Created at ... [Delete] [Delete and Lock User]

@用户3229353851

从你的回答来看你的确是个小白啊。

大牛都忙的一比,你以为他们是你的保姆吗? 大牛的时间不要钱吗?

你不知道自己能解决的事情就不要麻烦别人吗?

像你这种不会就直接问别人的,你以为开发很简单吗? 以后你遇到的故障80%以上你都不知道,你也直接就问吗?

你不需要成长吗?

自己不会穿衣服,都不会百度一下怎么穿,就问,卧槽这衣服怎么穿啊,求指教。

真的好逗!

白霓裳酱

#9 Created at ... [Delete] [Delete and Lock User]

import queue 这个是线程queue from multiprocess import Queue 这个是进程Queue

Kirto先森

#10 Created at ... [Delete] [Delete and Lock User]

@白霓裳酱 别乱回答,import queue是进程内非阻塞队列。后者是跨进程通信队列。


  • 1
  • 2

Reply