文章详情页
python - 关于单例的线程安全问题
问题描述
class Singleton(object): __instance = None def __new__(cls, *args, **kwargs):if not cls.__instance: cls.__instance = super(Singleton, cls).__new__(cls, *args, **kwargs)return cls.__instance if __name__ == ’__main__’: # 多线程中单例的使用 from threading import Thread def func():print(id(Singleton()))for index in range(10000): Thread(target=func).start()
上面试python中实现单例的一种方式,但是我们都知道这种实现方式不是线程安全的。上面代码中我自己写了测试代码,但是发现id输出都是一样的。这个就证明不了非线程安全的?我的问题是:如何写出可以证明这种实现不是线程安全的测试代码?
问题解答
回答1:本来单例模式就只能实例化1个对象,跟线程没有任何关系。即使是线程安全的,它也返回相同的id。
相关文章:
1. javascript - html5显示隐藏2. javascript - 如何用polymer写一个文件目录树?3. css3 - 微信小程序如何把radio改成2个选择按钮的样式4. angular.js - angularjs ng-repeat 不能刷新5. Angular.js 无法设置Authorization头,该怎么解决?6. angular.js - angular.ui:dropdown的下拉菜单关闭的偶尔失常问题7. 如何解决Centos下Docker服务启动无响应,且输入docker命令无响应?8. 关于《Effective Java中文版(第2版)》的问题9. css - 移动端 oppo 手机之 Border-radius10. javascript - vue2.0中,$refs对象为什么用驼峰的方式获取不到属性?
排行榜