1. #-*- coding: utf-8 -*- 
  2. ''''' 
  3. Created on 2012-4-12 
  4.  
  5. @author: cpic 
  6. ''' 
  7.  
  8. import thread 
  9. from time import sleep,ctime 
  10.  
  11. #子线程睡眠时间列表 
  12. loops = [4,2
  13.  
  14. def loop(nloop,nsec,lock): 
  15.     print 'start loop ',nloop,' at:',ctime() 
  16.     sleep(nsec) 
  17.     print 'loop ',nloop,' done at:',ctime() 
  18.     #子线程结束,释放锁 
  19.     lock.release() 
  20.  
  21. def main(): 
  22.     print 'starting at:',ctime() 
  23.      
  24.     #锁池 
  25.     locks = [] 
  26.      
  27.     #要运行子线程数 
  28.     nloops = range(len(loops)) 
  29.      
  30.     #向锁池添加锁,获取锁也需要时间,这里提前设好锁,而非运行线程时创建锁 
  31.     for i in nloops: 
  32.         #获得锁 
  33.         lock = thread.allocate_lock() 
  34.         #上锁 
  35.         lock.acquire() 
  36.         locks.append(lock) 
  37.      
  38.     #运行子线程 
  39.     for i in nloops: 
  40.         #启动子线程loop,同时将上锁的锁对象作为参数传递过去 
  41.         thread.start_new_thread(loop, (i,loops[i],locks[i])) 
  42.      
  43.     #主线程等待所有锁,解锁 
  44.     for i in nloops: 
  45.         while locks[i].locked():pass 
  46.          
  47.     print 'all DONE at:',ctime() 
  48.  
  49. if __name__ =="__main__"
  50.     main()


--------运行结果---------

starting at: Thu Apr 12 15:59:28 2012
start loop start loop 10 at: at: Thu Apr 12 15:59:28 2012Thu Apr 12 15:59:28 2012

loop 1 done at: Thu Apr 12 15:59:30 2012
loop 0 done at: Thu Apr 12 15:59:32 2012
all DONE at: Thu Apr 12 15:59:32 2012