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()