基本信息
源码名称:python 单例模式(入门级)
源码大小:0.95KB
文件格式:.py
开发语言:Python
更新时间:2019-03-13
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 1 元 
   源码介绍


#!/usr/bin/python
# -*- coding: utf-8 -*-

import threading


def synchronized(func):
    func.__lock__=threading.Lock()

    def synced_func(*args,**kws):
        with func.__lock__ :
            return func(*args,**kws)

    return synced_func


class Singleton(object):
    instance=None

    @synchronized
    def __new__(cls,*args,**kw):
        if cls.instance is None:
            cls.instance = object.__new__(cls, *args, **kw)
        return cls.instance

    def __init__(self, num):
        self.a = num   5

    def printf(self):
        print(self.a)


def worker(i):
    single_test = Singleton(i)
    single_test.printf()
    print "id----> %s" % id(single_test)


if __name__ == "__main__":
    task_list = []
    for i in range(3):
        t = threading.Thread(target=worker,args=(i,))
        task_list.append(t)

    for one in task_list:
        one.start()

    for one in task_list:
        one.join()