python线程锁(thread)学习示例

代码如下:

# encoding: utf-8import threadimport time# 一个用于在线程中执行的函数def func(): for i in range(5): print ‘func’ time.sleep(1) # 结束当前线程 # 这个方法与thread.exit_thread()等价 thread.exit() # 当func返回时,线程同样会结束# 启动一个线程,线程立即开始运行# 这个方法与thread.start_new_thread()等价# 第一个参数是方法,第二个参数是方法的参数thread.start_new(func, ()) # 方法没有参数时需要传入空tuple# 创建一个锁(locktype,不能直接实例化)# 这个方法与thread.allocate_lock()等价lock = thread.allocate()# 判断锁是锁定状态还是释放状态print lock.locked()# 锁通常用于控制对共享资源的访问count = 0# 获得锁,成功获得锁定后返回true# 可选的timeout参数不填时将一直阻塞直到获得锁定# 否则超时后将返回falseif lock.acquire(): count += 1 # 释放锁 lock.release()# thread模块提供的线程都将在主线程结束后同时结束time.sleep(6)

thread 模块提供的其他方法: thread.interrupt_main(): 在其他线程中终止主线程。 thread.get_ident(): 获得一个代表当前线程的魔法数字,常用于从一个字典中获得线程相关的数据。这个数字本身没有任何含义,并且当线程结束后会被新线程复用。

thread还提供了一个threadlocal类用于管理线程相关的数据,名为 thread._local,threading中引用了这个类。