#!/usr/bin/python #coding=utf8 """ # Author: songtianlun # Created Time : 2021-09-26 10:57:39 # File Name: Singleton_with_new.py # Description: """ import threading class Singleton(object): _instance_lock = threading.Lock() def __init__(self): pass def __new__(cls, *args, **kwargs): if not hasattr(Singleton, "_instance"): with Singleton._instance_lock: if not hasattr(Singleton, "_instance"): Singleton._instance = object.__new__(cls) return Singleton._instance class SingletonUse1(Singleton): def __init__(self): pass class SingletonUse2(Singleton): def __init__(self): pass obj1 = Singleton() obj2 = Singleton() print (obj1, obj2) def task_singleton(arg): obj = Singleton() print("singleton", obj) def task_singleton_use1(arg): obj = SingletonUse1() print("singleton_use_1", obj) def task_singleton_use2(arg): obj = SingletonUse2() print("singleton_use_2", obj) for i in range(10): t = threading.Thread(target=task_singleton,args=[i,]) t.start() for i in range(10): t = threading.Thread(target=task_singleton_use1,args=[i,]) t.start() for i in range(10): t = threading.Thread(target=task_singleton_use2,args=[i,]) t.start()