from threading import Thread

class Worker(Thread):
    def __init__(self, id, lo, hi):
        Thread.__init__(self)
        self.lo = lo
        self.hi = hi
        self.id = id

    def run(self):
        import time
        for i in range(self.lo, self.hi):
            print "id %d printing %d" % (self.id, i)
            time.sleep(.1)

nthreads = 4
for i in range(nthreads):
    w = Worker(i, 10*i, 10*(i+1))
    w.start()

# nota:  "threading" automáticamente lleva a cabo un .join()
# de todos los threads hijo antes de que el thread principal acabe, 
# no se requiere nada especial para prevenir que el programa  special 
# antes de que los threads acaben su función
