18.5.2 斐波那契、阶乘和累加和
import threading
from time import ctime, sleep
loops = [4, 2]
class MyThread(threading.Thread):
def __init__(self, func, args, name=''):
threading.Thread.__init__(self)
self.func = func
self.args = args
self.name = name
def run(self):
apply(self.func, self.args)
def loop(nloop, nsec):
print 'start loop ', nloop, ' at: ', ctime()
sleep(nsec)
print 'loop ', nloop, ' done at: ', ctime()
def main():
print 'starting at: ', ctime()
threads = []
nloops = range(len(loops))
for i in nloops:
theThread = MyThread(loop, (i, loops[i]), loop.__name__)
threads.append(theThread)
for i in nloops:
threads[i].start()
for i in nloops:
threads[i].join()
print 'all DONE at: ', ctime()
main()
继承Threading.Thread类,重写Thread的run函数,在子类的__init__中调用基类的__init__函数
import threading
class MyThread(threading.Thread):
def __init__(self, func, args, name=''):
threading.Thread.__init__(self)
self.func = func
self.args = args
self.name = name
def run(self):
self.res = apply(self.func, self.args)
def getResult(self):
return self.res
也可以给子类加上一个getResult()函数用以返回函数的运行结果。
18.5.3 threading模块中的其他函数
activeCount() 当前活动的线程对象的数量
currentThread() 返回当前线程对象
enumerate() 返回当前活动线程的列表