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() 
 
print 'starting at:', ctime() 
threads = [] 
nloops = range(len(loops)) 
 
for i in nloops: # create all threads 
    t = threading.Thread(target=ThreadFunc(loop, (i, loops[i]),loop.__name__)) 
    threads.append(t) 
 
for i in nloops: # start all threads 
    threads[i].start() 
 
for i in nloops: # wait for completion 
    threads[i].join() 
 
print 'all DONE at:', ctime()
  |