zoukankan      html  css  js  c++  java
  • DAY 94 flask03

    不用local

    from threading import Thread

    import time

    #

    a = -1

    b = 2

    #

    def task(arg):

    global a

    a = arg

    time.sleep(2)

    print(a)

    # #

    for i in range(10):

    t = Thread(target=task, args=(i,))

    t.start()

    from threading import Thread from threading import local import time

    """ {'线程1':{'value':1},'线程2':{'value':1},'线程3':{'value':1},'线程4':{'value':1},'线程5':{'value':1}}

    """ from threading import get_ident

    特殊的对象

    lqz = local()

    def task(arg):

    # 对象.val = 1/2/3/4/5

    lqz.value = arg

    time.sleep(2)

    print(lqz.value)

    for i in range(10):

    t = Thread(target=task,args=(i,))

    t.start()

    """

    local对象只支持线程,不支持协程,生成自己的local对象,各改个的,互补影响 {'线程1':{'value':1},'线程2':{'value':1},'线程3':{'value':1},'线程4':{'value':1},'线程5':{'value':1}}

    """

    面向过程写法

    from threading import get_ident,Thread,current_thread

    import time

    storage = {}

    def set(k,v):

    # 获取线程id

    ident = get_ident()

    if ident in storage:

    storageident = v

    else:

    storage[ident] = {k:v}

    def get(k):

    ident = get_ident()

    return storageident

    def task(arg):

    set('val',arg)

    v = get('val')

    print(v)

    #

    for i in range(10):

    t = Thread(target=task,args=(i,))

    t.start()

    面向对象写法

    from threading import get_ident, Thread

    import time

    # #

    class Local(object):

    storage = {}

    #

    def set(self, k, v):

    ident = get_ident()

    if ident in Local.storage:

    Local.storageident = v

    else:

    Local.storage[ident] = {k: v}

    #

    def get(self, k):

    ident = get_ident()

    return Local.storageident

    # #

    obj = Local()

    # #

    def task(arg):

    obj.set('val', arg)

    v = obj.get('val')

    print(v)

    # #

    for i in range(10):

    t = Thread(target=task, args=(i,))

    t.start()

    # #

    from threading import get_ident, Thread

    import time

    # #

    class Local(object):

    storage = {}

    #

    def setattr(self, k, v):

    ident = get_ident()

    if ident in Local.storage:

    Local.storageident = v

    else:

    Local.storage[ident] = {k: v}

    #

    def getattr(self, k):

    ident = get_ident()

    return Local.storageident

    # #

    obj = Local()

    # # #

    def task(arg):

    # setattr

    # getattr

    obj.val = arg

    print(obj.val)

    # #

    for i in range(10):

    t = Thread(target=task, args=(i,))

    t.start()

    from threading import get_ident, Thread import time

    #

    class Local(object):

    def init(self):

    object.setattr(self, 'storage', {})

    # self.setattr('storage', {})

    #

    def setattr(self, k, v):

    ident = get_ident()

    if ident in self.storage:

    self.storageident = v

    else:

    self.storage[ident] = {k: v}

    #

    def getattr(self, k):

    ident = get_ident()

    return self.storageident

    # #

    obj = Local()

    # #

    def task(arg):

    obj.val = arg

    obj.xxx = arg

    print(obj.val)

    # #

    for i in range(10):

    t = Thread(target=task, args=(i,))

    t.start()

    try: # getcurrent 获取协程id from greenlet import getcurrent as get_ident except Exception as e: # from threading import get_ident

    from threading import Thread import time

    class Local(object): def init(self): object.setattr(self, 'storage', {})

    def __setattr__(self, k, v):
      ident = get_ident()
      if ident in self.storage:
          self.storage[ident][k] = v
      else:
          self.storage[ident] = {k: v}

    def __getattr__(self, k):
      ident = get_ident()
      return self.storage[ident][k]

    obj = Local()

    def task(arg): obj.val = arg obj.xxx = arg print(obj.val)

    for i in range(10): t = Thread(target=task, args=(i,)) t.start()

  • 相关阅读:
    Ecshop支持用户名、邮箱或手机号码登录
    Ecshop模板在首页调用指定分类的热销、推荐、新品商品
    使用JQuery的全屏背景图片,自动适应各种屏幕和浏览器
    浏览器左下角提示网页上有错误解决方法
    设为首页、加入收藏
    Flash遮住Div的解决办法
    谷歌站内搜索的两种方式
    网页内插入百度、谷歌搜索引擎
    CSS透明滤镜
    Eclipse无Server或者Tomcat8.5解决办法
  • 原文地址:https://www.cnblogs.com/DEJAVU888/p/14894165.html
Copyright © 2011-2022 走看看