您的位置:首页 > 编程语言 > Python开发

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

2013-04-12 18:05 453 查看
上次用一行函数完成了,这次是要用多线程来完成。

#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的方法不是很安全的其实。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息