更新时间:2023-12-08 来源:黑马程序员 浏览量:

当涉及到线程安全的单例模式时,可以使用Python中的线程锁(threading.Lock())来确保只有一个线程能够实例化该类。以下是一个示例:
import threading
class Singleton:
_instance = None
_lock = threading.Lock()
def __new__(cls, *args, **kwargs):
if not cls._instance:
with cls._lock:
if not cls._instance:
cls._instance = super().__new__(cls)
return cls._instance
# 示例用法
def create_singleton_instance():
singleton_instance = Singleton()
print(f"Singleton instance ID: {id(singleton_instance)}")
# 创建多个线程来尝试获取单例实例
threads = []
for _ in range(5):
thread = threading.Thread(target=create_singleton_instance)
threads.append(thread)
thread.start()
for thread in threads:
thread.join()这个示例中,Singleton类使用__new__方法来控制实例的创建,确保只有一个实例被创建。_lock是一个 threading.Lock()对象,用于在多线程环境下保护对_instance的访问,防止多个线程同时创建实例。
1024首播|39岁程序员逆袭记:不被年龄定义,AI浪潮里再迎春天
2025-10-241024程序员节丨10年同行,致敬用代码改变世界的你
2025-10-24【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19