Skip to content

Instantly share code, notes, and snippets.

@tkhoa2711
Created October 25, 2014 16:51
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save tkhoa2711/7ce18809febbca4828db to your computer and use it in GitHub Desktop.
Save tkhoa2711/7ce18809febbca4828db to your computer and use it in GitHub Desktop.
A thread-safe implementation of Singleton in Python
import threading
# A thread-safe implementation of Singleton pattern
# To be used as mixin or base class
class Singleton(object):
# use special name mangling for private class-level lock
# we don't want a global lock for all the classes that use Singleton
# each class should have its own lock to reduce locking contention
__lock = threading.Lock()
# private class instance may not necessarily need name-mangling
__instance = None
@classmethod
def instance(cls):
if not cls.__instance:
with cls.__lock:
if not cls.__instance:
cls.__instance = cls()
return cls.__instance
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment