[Python]多线程threading函数方法--计算5!+4!+3!+2!+1!

来源:互联网 发布:新西兰网络攻略 编辑:程序博客网 时间:2024/06/15 09:50

上次用一行函数完成了,这次是要用多线程来完成。

#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的方法不是很安全的其实。

原创粉丝点击