Python多线程求斐波那契数列

#递归求斐波那契函数,阶乘,累加

from myThread import MyThread
from time import ctime, sleep

'''斐波那契数列'''
def fib(x):
    sleep(0.005)
    if x < 2 : return 1
    return (fib(x-2) + fib(x-1))    #调用递归继续求下面的数值

'''求阶乘'''
def fac(x):
    sleep(0.1)
    if x < 2 : return 1
    return (x * fac(x-1))

'''求累加值'''
def sum(x):
    sleep(0.1)
    if x < 2 : return 1
    return (x + sum(x-1))

funcs = [fib,fac,sum]   #将三个模块放在这个列表里备用
n = 10

def main():
    nfuncs = range(len(funcs))          #长度为3

    print("*** 单线程 ***")
    for i in nfuncs:
        print("starting,",funcs[i].__name__,'at: ',ctime())
        print(funcs[i](n))              #将10代进去运算,这边其实是要加1.
        print(funcs[i].__name__,'finished at: ',ctime())

    print('\n*** 多线程 ***')
    threads = []
    for i in nfuncs:
        # 调用函数相当于以前的loop,n带进去运算,也休眠这么长时间,就不需要sleep了
        t = MyThread(funcs[i],(n, ), funcs[i].__name__)
        threads.append(t)               #将实例化的结果放到这个线程列表里备用
    for i in nfuncs:
        threads[i].start()              #启动线程
    for i in nfuncs:
        threads[i].join()
        print(threads[i].getResult())   #调用这个方法来显示每个线程对应的函数的返回值

    print('All done')

if __name__ == '__main__':

    main()

#下面是输出的结果

#通过对比可以发现,单线程只能等一个线程结束后,才能创建下一个; 而多线程可以实现同步线程,可以同步创建,同步结束.

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值