一 threading模块介绍

multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性,因而不再详细介绍

thread模块 
python不推荐使用这个模块,推荐更高级的threading。 
thread模块和对象

函数    描述
start_new_thread(function,args)    产生新线程,指定函数和参数
allocate_lock()    分配一个LockType类型的锁对象
exit()    线程退出
LockType对象的方法    
acquire()    尝试获取对象对象
locked    如果获取了返回True否则返回False
release()    释放锁


thread.py

#coding:utf-8
import thread
from time import sleep,ctime
loops=[4,2]#睡眠时间

def loop(nloop,nsec,lock):
    print 'start loop',nloop,'at:',ctime()
    sleep(nsec)
    print 'loop',nloop,'done at:',ctime()
    lock.release()#释放锁对象

def main():
    print 'starting at :',ctime()
    locks=[]
    nloops=range(len(loops))#创建nloops数组

    #创建锁并加入组
    for i in nloops:
        lock=thread.allocate_lock()#创建 lock (不能直接加入)
        lock.acquire()#尝试获取lock
        locks.append(lock)#加入组

    for i in nloops:
        thread.start_new_thread(loop,(i,loops[i],locks[i]))#创建线程
    #获取锁对象 成功True 失败False
    for i in nloops:
        while locks[i].locked():pass#如果锁对象被释放 表示解锁了 可以继续执行

    print 'all DONE at:',ctime()

if __name__ == '__main__':
    main()
thread模块

相关文章: