多线程实例一般用法 :
 
def worker(msg):
    print ("start {0}".format(msg))
if __name__=="__main__":
#----传统方式
    for i in xrange(1,6):
       t1=threading.Thread(target=worker,args=(i,))
       t1.start()
    t1.join()
结果:
C:\Python27\python.exe E:/untitled/Mutil/T1.py
start 1
start 2
start 3
start 4
start 5

 

 
重做run函数做法:
 
class Mythread(threading.Thread):
    def __init__(self,args):
        super(Mythread,self).__init__()
        self.args=args
    def run(self):
        print ("stop{0}".format(self.args))
    for x in xrange(11,16):
        t2=Mythread(x)
        t2.start()
    t2.join()

结果:

stop11
stop12
stop13
stop14
stop15

Process finished with exit code 0

 

线程锁:

与进程锁类似,两个线程先获得锁权先执行,剩下的后执行。
普通锁:
def worker(msg,lock):
    with lock:
        print ("start {0}".format(msg))
        time.sleep(2)
        print ("end {0}".format(msg))
使用lock.aquare与lock.release:
def worker (msg,lock):
    lock.acquire()
    try:
        print ("start {0}".format(msg))
        time.sleep(2)
        print ("end {0}".format(msg))
    except Exception as e:
        raise e
    finally:
        lock.release()
主函数:
if __name__=="__main__":
    lock=threading.Lock()
    for i in xrange(1,3):
        t1 = threading.Thread(target=worker, args=("w1", lock))
        t1.start()
    for x in xrange(1,4):
        t2 = threading.Thread(target=worker, args=("w2", lock))
        t2.start()
两只作用相同执行结果一致:
C:\Python27\python.exe E:/untitled/Mutil/T2.py
start w1
end w1
start w1
end w1
start w2
end w2
start w2
end w2
start w2
end w2

Process finished with exit code 0