2012-04-19 7 views
11

Entonces, comenzaré diciendo que esto es para un problema de tarea. Mi profesor nos dio una tarea que debe escribirse una vez en Java y una vez en otro idioma; Elegí el segundo idioma para ser Python ya que al menos estoy un poco familiarizado con él. El programa debe funcionar de la siguiente manera:¿Tiene Python un mecanismo de control similar al CountDownLatch de Java?

Inicie el método principal/thread que llamaremos parent.

rosca de entrada infantil 1 del padre

comienzo de la rosca nieto del niño hilo 1

rosca de entrada del niño 2 del padre

de impresión nieto de la rosca nieto

de impresión niño 2 desde el hijo 2 hilos

imprimir hijo 1 del hijo 1 thread

padre de impresión desde el método principal/subproceso principal

Estas cosas deben hacerse en este orden. He escrito un código que hace esto en Java usando CountDownLatch para organizar la forma en que ocurren estas cosas. Sin embargo, no vi un mecanismo similar en Python (aunque estoy menos familiarizado con Python que con Java). ¿Hay algún mecanismo similar que quizás no puedo encontrar porque no sé cómo se llama?

Respuesta

0

Observe las clases Semaphore o Condition del módulo threading.

16

se puede implementar utilizando CountDownLatch threading.Condition así:

import threading 

class CountDownLatch(object): 
    def __init__(self, count=1): 
     self.count = count 
     self.lock = threading.Condition() 

    def count_down(self): 
     self.lock.acquire() 
     self.count -= 1 
     if self.count <= 0: 
      self.lock.notifyAll() 
     self.lock.release() 

    def await(self): 
     self.lock.acquire() 
     while self.count > 0: 
      self.lock.wait() 
     self.lock.release() 
Cuestiones relacionadas