Skip to main content

Singleton vs Multiple Instances

Singleton

Only one instance for the entire app — good for shared resources.

class AppConfig:
_instance = None

def __new__(cls):
if cls._instance is None:
cls._instance = super().__new__(cls)
cls._instance.load_config()
return cls._instance

config = AppConfig() # whole app shares this one instance

When to Use Singleton

ScenarioReason
Auth token managementAll requests share one token, centralized refresh
Config managementConfig only needs to be loaded once
LoggerCentralized log output
DB Connection PoolShared connection pool

When to Use Multiple Instances

ScenarioReason
Parallel data processorsEach processor handles its own data
Multiple different DB connectionsConnect to different databases
Multiple API clientsConnect to different services or accounts
# Multiple instances — each processor is independent
class DataProcessor:
def __init__(self, data):
self.data = data

def process(self):
return f"Processing {self.data}"

processor1 = DataProcessor("dataset_A")
processor2 = DataProcessor("dataset_B")

Summary

  • Singleton: Shared resources, global state, configuration management
  • Multiple instances: Parallel processing, resource isolation, different configurations