码迷,mamicode.com
首页 > 编程语言 > 详细

python thread local的用法

时间:2015-07-09 13:06:36      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:

      python 中多线程的并发跟其他语言一样,需要考虑多线程并发访问去全局变量所带来的问题,python的local类解决了这个问题,通过它让每个线程内部有一个相对独立的local保存数据,某一个线程修改了数据,不影响其他线程中保存的数据。

 1 from threading import Thread
 2 import threading
 3 import time
 4 local_value=threading.local()
 5 local_value.x=en
 6 class threadtest(Thread):
 7 
 8      def __init__(self,num):
 9          Thread.__init__(self)
10          self.num=num
11          
12      def run(self):
13          local_value.x=self.getName()
14          for i in range(self.num):
15              time.sleep(1)
16              print(local_value)
17          
18 
19 threadtest(3).start()
20 threadtest(2).start()        

执行结果是:

Thread-1
Thread-2
Thread-1
Thread-2
Thread-1
[Finished in 3.2s]

这表明,虽然两个线程公用一个local_value.x但是确实相互独立的变量。

另外,当

local_value.x=self.getName()放在__init__()中时,运行会报错,说‘_thread._local‘ object has no attribute ‘x‘,还不知道什么问题,但是还是先去吃饭吧。

python thread local的用法

标签:

原文地址:http://www.cnblogs.com/ladingwu/p/4632787.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!