|
@@ -1,54 +1,51 @@
|
|
|
"""http://stackoverflow.com/questions/1514120/python-implementation-of-the-object-pool-design-pattern"""
|
|
|
|
|
|
|
|
|
-class qObj():
|
|
|
- _q = None
|
|
|
- o = None
|
|
|
-
|
|
|
- def __init__(self, dQ, autoGet = False):
|
|
|
- self._q = dQ
|
|
|
-
|
|
|
- if autoGet == True:
|
|
|
- self.o = self._q.get()
|
|
|
+class QueueObject():
|
|
|
+ def __init__(self, queue, auto_get=False):
|
|
|
+ self._queue = queue
|
|
|
+ self.object = self._queue.get() if auto_get else None
|
|
|
|
|
|
def __enter__(self):
|
|
|
- if self.o == None:
|
|
|
- self.o = self._q.get()
|
|
|
- return self.o
|
|
|
+ if self.object is None:
|
|
|
+ self.object = self._queue.get()
|
|
|
+ return self.object
|
|
|
|
|
|
def __exit__(self, type, value, traceback):
|
|
|
- if self.o != None:
|
|
|
- self._q.put(self.o)
|
|
|
- self.o = None
|
|
|
+ if self.object is not None:
|
|
|
+ self._queue.put(self.object)
|
|
|
+ self.object = None
|
|
|
|
|
|
def __del__(self):
|
|
|
- if self.o != None:
|
|
|
- self._q.put(self.o)
|
|
|
- self.o = None
|
|
|
+ if self.object is not None:
|
|
|
+ self._queue.put(self.object)
|
|
|
+ self.object = None
|
|
|
|
|
|
|
|
|
-if __name__ == "__main__":
|
|
|
+def main():
|
|
|
try:
|
|
|
- import queue as Queue
|
|
|
- except: # python 2.x compatibility
|
|
|
- import Queue
|
|
|
+ import queue
|
|
|
+ except ImportError: # python 2.x compatibility
|
|
|
+ import Queue as queue
|
|
|
|
|
|
- def testObj(Q):
|
|
|
- someObj = qObj(Q, True)
|
|
|
- print('Inside func: {}'.format(someObj.o))
|
|
|
+ def test_object(queue):
|
|
|
+ queue_object = QueueObject(queue, True)
|
|
|
+ print('Inside func: {}'.format(queue_object.object))
|
|
|
|
|
|
- aQ = Queue.Queue()
|
|
|
- aQ.put("yam")
|
|
|
+ sample_queue = queue.Queue()
|
|
|
|
|
|
- with qObj(aQ) as obj:
|
|
|
- print("Inside with: {}".format(obj))
|
|
|
+ sample_queue.put('yam')
|
|
|
+ with QueueObject(sample_queue) as obj:
|
|
|
+ print('Inside with: {}'.format(obj))
|
|
|
+ print('Outside with: {}'.format(sample_queue.get()))
|
|
|
|
|
|
- print('Outside with: {}'.format(aQ.get()))
|
|
|
+ sample_queue.put('sam')
|
|
|
+ test_object(sample_queue)
|
|
|
+ print('Outside func: {}'.format(sample_queue.get()))
|
|
|
|
|
|
- aQ.put("sam")
|
|
|
- testObj(aQ)
|
|
|
+ if not sample_queue.empty():
|
|
|
+ print(sample_queue.get())
|
|
|
|
|
|
- print('Outside func: {}'.format(aQ.get()))
|
|
|
|
|
|
- if not aQ.empty():
|
|
|
- print(aQ.get())
|
|
|
+if __name__ == '__main__':
|
|
|
+ main()
|