【Python】多线程2
threading模块
import time import random import threading class Inclass: def __init__(self): print 'Inclass 初始化' def execIn(self,i): rand = int(random.random() * 10) print i,'---%s--开始执行,暂停%d秒' % (time.ctime(),rand) time.sleep(rand) class Outclass: def __init__(self): print 'OutClass初始化' def execOut(self): InC = Inclass() length = 1000 nloops = range(length) threads = [] for i in range(length): t = threading.Thread(target = InC.execIn, args = (i,)) threads.append(t) for i in nloops: threads[i].start() for i in nloops: threads[i].join() OC = Outclass() OC.execOut()
版本2:
import time import random import threading class Inclass: def __init__(self): print 'Inclass 初始化' def execIn(self,i): rand = int(random.random() * 10) print i,'---%s--开始执行,暂停%d秒' % (time.ctime(),rand) time.sleep(rand) return i class MyThread(threading.Thread): def __init__(self,func,args,name = ''): threading.Thread.__init__(self) self.name = name self.func = func self.args = args def getResult(self): return self.res def run(self): self.res = self.func(*self.args) class Outclass: def __init__(self): print 'OutClass初始化' def execOut(self): InC = Inclass() length = 1000 threadlen = 10 k = 0 i = 0 while i < length: nloops = range(threadlen) threads = [] for j in range(threadlen): t = MyThread( InC.execIn, (i,)) i += 1 threads.append(t) for i in nloops: threads[i].start() for i in nloops: threads[i].join() for i in nloops: print '-----result:',threads[i].getResult() print k,'---%s--开始执行多线程第%d个小循环' % (time.ctime(),k) k += 1 OC = Outclass() OC.execOut()