main()
创建Thread实例,传给他一个可调用的类实例
import threading
from time import ctime,sleep
loops = [4,2]
class ThreadFunc(object):
'''使用构造函数初始化这些属性'''
def __init__(self,func,args,name = ''):
self.name = name
self.func = func
self.args = args
'''通过调用__call__(self)方法,创建新的线程'''
def __call__(self):
self.func(*self.args) #调用这个方法可以传递参数
def loop(nloop , nsec):
print('Starting 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:
'''创建所有的线程'''
t = threading.Thread( target= ThreadFunc(loop, (i,loops[i]),loop.__name__))
threads.append(t)
'''开始所有的线程'''
for i in nloops:
threads[i].start()
'''等待线程关闭'''
for i in nloops:
threads[i].join()
print('All done at: ',ctime())
if __name__ == '__main__':
main()