1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| from MyThread import MyThread from time import sleep,ctime
def fib(x): sleep(0.005) if x < 2: return 1 return (fib(x-2)+fib(x-1))
def fac(n): sleep(0.1) if n < 2: return 1 return n*fac(n-1)
def sum(n): sleep(0.1) if n<1: return 0 return n+sum(n-1)
funcs = [fib, fac, sum] n=12
def main(): nfuncs = range(len(funcs))
print '*** SINGLE TRHEADS'
for i in nfuncs: print 'starting ',funcs[i].__name__, 'at:', ctime() print funcs[i](n) print funcs[i].__name__,'finished at:', ctime()
print '\n### MULTIPLE THREADS' threads = [] for i in nfuncs: t = MyThread(funcs[i], (n,), name = 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()
|