threading
threading 模块的Thread类有一个join()函数,允许主线程等待线程的结束
# -*- coding: UTF-8 -*- import threading import time loops = [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 threading import time 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, 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 threading import time loops = [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()