python 多线程

来源:互联网 发布:三菱数控系统编程 编辑:程序博客网 时间:2024/05/16 04:56

创建ThreadFunc类和创建Thread对象,来实现多线程。
创建新线程的时候,Thread对象会调用我们的TreadFunc对象,这是会用到一个特殊的函数__call__()。由于有一个参数的元组,这时要在代码中使用apply()函数。

# -*- coding: utf-8 -*-"""Created on Tue Sep 08 15:04:14 2015@author: wt"""import threadingfrom time import sleep,ctimeloops = [4, 2]class ThreadFunc(object):    def __init__(self, func, args,name=''):        self.name = name        self.func = func        self.args = args    def __call__(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:            t = threading.thread(target=threadFunc(loop,(i,loop[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()

运行结果:

starting at: Tue Sep 08 15:30:54 2015start loop 0 at: Tue Sep 08 15:30:54 2015start loop 1 at: Tue Sep 08 15:30:54 2015loop 1 done at: Tue Sep 08 15:30:56 2015loop 0 done at: Tue Sep 08 15:30:58 2015all DONE at: Tue Sep 08 15:30:58 2015
0 0
原创粉丝点击