上次用一行函数完成了,这次是要用多线程来完成。
#coding=utf8 ''' def singles(): sum = 0 for i in range(1,6): t=reduce(lambda x,y:x*y,range(1,i+1)) sum +=t return sum print singles() ''' #多线程实现,一下子启动5个线程,去计算1-5的阶乘,一个全局变量sum把结果加到一起 import threading,time sum = 0 lock = threading.Lock() def single(i): global sum,lock lock.acquire() t=reduce(lambda x,y:x*y,range(1,i+1)) sum = sum + t print threading.currentThread().getName(),t lock.release() def main(): global sum for i in range(1,6): threading.Thread(target=single,args=(i,),name='Thread'+str(i)).start() time.sleep(1) print sum if __name__=='__main__': main()
没有判断线程阻塞,直接用sleep的方法不是很安全的其实。