1.python提供了多个模块支持多线程编程。thread,threading和Queue模块等。thread模块建议研究底层用,一般用功能更完善的threading。 2.thread对于进程何时退出没有限制,主函数退出所有的都退出,同步原语也很少。该模块有三个函数:start_new_thread(function,arges,kwargs=None),allocate_lock(),exit().分别是派生心线程,分配LockType锁对象,exit()退出线程。
3.实例:
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))
for i in nloops:
lock = thread.allocate_lock()
lock.acquire()
locks.append(lock)
for i in nloops:
thread.start_new_thread(loop,(i,loops[i],locks[i]))
for i in nloops:
while locks[i].locked():
pass
print 'all DONE at:', ctime()
if __name__ == '__main__':
main()