/ Design Patterns / Creational patterns / Object Pool Object Pool Design Pattern in Python Back to Object Pool description """ Offer a significant performance boost; it is most effective in situations where the cost of initializing a class instance is high, the rate of instantiation of a class is high, and the number of instantiations in use at any one time is low. """ class ReusablePool: """ Manage Reusable objects for use by Client objects. """ def __init__(self, size): self._reusables = [Reusable() for _ in range(size)] def acquire(self): return self._reusables.pop() def release(self, reusable): self._reusables.append(reusable) class Reusable: """ Collaborate with other objects for a limited amount of time, then they are no longer needed for that collaboration. """ pass def main(): reusable_pool = ReusablePool(10) reusable = reusable_pool.acquire() reusable_pool.release(reusable) if __name__ == "__main__": main() Support our free website and own the eBook! 22 design patterns and 8 principles explained in depth 406 well-structured, easy to read, jargon-free pages 228 clear and helpful illustrations and diagrams An archive with code examples in 4 languages All devices supported: EPUB/MOBI/PDF formats Learn more...