【发布时间】:2014-10-02 19:05:48
【问题描述】:
我试图弄清楚下面的模块在做什么。
import Queue
import multiprocessing
import threading
class BufferedReadQueue(Queue.Queue):
def __init__(self, lim=None):
self.raw = multiprocessing.Queue(lim)
self.__listener = threading.Thread(target=self.listen)
self.__listener.setDaemon(True)
self.__listener.start()
Queue.Queue.__init__(self, lim)
def listen(self):
try:
while True:
self.put(self.raw.get())
except:
pass
@property
def buffered(self):
return self.qsize()
它只在调用代码中实例化一次,.raw 属性 multiprocessing.Queue 被发送到另一个类,该类似乎继承自 multiprocessing.Process。
正如我所见,BufferedReadQueue 的一个属性被用作队列,而不是类(也不是它的实例)本身。
BufferedReadQueue 继承自 Queue.Queue 而不仅仅是 object 的原因是什么,如果它实际上没有被用作队列?
【问题讨论】:
标签: python multithreading queue multiprocessing