您的位置:首页 > 编程语言 > Python开发

python 多线程

2015-09-08 15:38 573 查看
创建ThreadFunc类和创建Thread对象,来实现多线程。

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

# -*- coding: utf-8 -*-
"""
Created on Tue Sep 08 15:04:14 2015

@author: wt
"""

import threading
from time import sleep,ctime

loops = [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 2015
start loop 0 at: Tue Sep 08 15:30:54 2015
start loop 1 at: Tue Sep 08 15:30:54 2015
loop 1 done at: Tue Sep 08 15:30:56 2015
loop 0 done at: Tue Sep 08 15:30:58 2015
all DONE at: Tue Sep 08 15:30:58 2015
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: