GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — python-patterns/pool.py at master · ojengwa/python-patterns Expand file tree/ Copy pathpool.pyMore file actions 61 lines (44 loc) · 1.49 KB / Copy pathpool.pyFile metadata and controls61 lines (44 loc) · 1.49 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 #!/usr/bin/env python # -*- coding: utf-8 -*- """http://stackoverflow.com/questions/1514120/python-implementation-of-the-object-pool-design-pattern""" 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.object is None: self.object = self._queue.get() return self.object def __exit__(self, Type, value, traceback): if self.object is not None: self._queue.put(self.object) self.object = None def __del__(self): if self.object is not None: self._queue.put(self.object) self.object = None def main(): try: import queue except ImportError: # python 2.x compatibility import Queue as queue def test_object(queue): queue_object = QueueObject(queue, True) print('Inside func: {}'.format(queue_object.object)) sample_queue = queue.Queue() sample_queue.put('yam') with QueueObject(sample_queue) as obj: print('Inside with: {}'.format(obj)) print('Outside with: {}'.format(sample_queue.get())) sample_queue.put('sam') test_object(sample_queue) print('Outside func: {}'.format(sample_queue.get())) if not sample_queue.empty(): print(sample_queue.get()) if __name__ == '__main__': main() ### OUTPUT ### # Inside with: yam # Outside with: yam # Inside func: sam # Outside func: sam |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |