threading 模块的Thread类有一个join()函数,允许主线程等待线程的结束
# -*- coding: UTF-8 -*-import threadingimport timeloops = [4, 2]def loop(nloop, nesc): PRint "start loop", nloop, "at:", time.ctime() time.sleep(nesc) print "loop", nloop, "done at:", time.ctime() def main(): print "starting at ", time.ctime() threads = [] nloops = range(len(loops)) for i in nloops: t = threading.Thread(target=loop, args = [i, loops[i]]) threads.append(t) for i in nloops: threads[i].start() for i in nloops: threads[i].join() print "all done at:", time.ctime() if __name__ == "__main__": main()# -*- coding: UTF-8 -*-import threadingimport timeloops = [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, nesc): print "start loop", nloop, "at:", time.ctime() time.sleep(nesc) print "loop", nloop, "done at:", time.ctime() def main(): print "starting at ", time.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:", time.ctime() if __name__ == "__main__": main()# -*- coding: UTF-8 -*-import threadingimport timeloops = [4, 2]class MyThread(threading.Thread): def __init__(self, func, args, name =""): threading.Thread.__init__(self) self.name = name self.func = func self.args = args def run(self): apply(self.func, self.args)def loop(nloop, nesc): print "start loop", nloop, "at:", time.ctime() time.sleep(nesc) print "loop", nloop, "done at:", time.ctime() def main(): print "starting at ", time.ctime() threads = [] nloops = range(len(loops)) for i in nloops: t = MyThread(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:", time.ctime() if __name__ == "__main__": main()
新闻热点
疑难解答