threadlocal存放的值是线程封闭的,threadlocal使用场景

  threadlocal存放的值是线程封闭的,threadlocal使用场景

  在同一个进程下,多个线程共享进程的数据。为了保证数据的安全性,多线程写会被锁死,也就是说多线程模式下效率会降低。

  Threading.local()可以为每个线程创建一个本地名称空间。threading.local()是全局的,所有线程都可以访问,但是放入threading.local()对象的属性数据不会受到其他线程的干扰。

  未使用Threading.local:

  导入线程

  导入时间

  local=threading.local()

  定义集合(I):

  # local.i=i

  Print (set number ,threading.current _ thread()。姓名,我)

  时间.睡眠(1)

  获取()

  def get():

  打印(“获取数据”,I)

  if __name__==__main__ :

  对于范围(3)中的I:

  t=螺纹。线程(target=set,args=(i,))

  T.start()结果,所有线程都获得thread Thread-3 set的值。

  使用thread.local:

  导入线程

  导入时间

  local=threading.local()

  定义集合(I):

  local.i=i

  Print (set number ,threading.current _ thread()。姓名,本地. I)

  时间.睡眠(1)

  获取()

  def get():

  打印(获取数据,local.i)

  if __name__==__main__ :

  对于范围(3)中的I:

  t=螺纹。线程(target=set,args=(i,))

  t.start()放在thread.local中的属性是隔离的,互不干扰。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: