Tengo una clase, por ejemplo como el siguiente
Class Example(object):
trigger_event = threading.Event()
def set_trigger(self):
# do some stuff
self.trigger_event.set()
Lo que soy hallazgo es si tengo un grupo de estos objetos y procesarlos en un solo hilo, a continuación, una vez que el primer objeto tiene su conjunto de eventos, a continuación, todos los demás objetos que se establece así. ¿No hay manera de tener un miembro evento único para cada objeto individual?
Si tengo 10 objetos, e imprimir el is_set () para el evento antes de que llame set_trigger (), entonces se mostrará como FALSE, TRUE, TRUE, TRUE, etc ...
Gracias de antemano por cualquier ayuda o conocimiento!
Es probable que esté malinterpretando el Event
objeto. El Event
objeto se utiliza para la comunicación entre múltiples hilos: un hilo de señales de un evento y otros hilos esperar.
Un objeto de evento gestiona un indicador interno que puede ser ajustado a verdadero con el método set () y de restablecimiento a falso con el método clear (). Los bloques del método wait () hasta que el indicador es verdadero.
Pero si todavía quiere hacer eso, usted tiene que crear nuevo objeto de evento cada vez que se crea nueva instancia de Example
. Así que es posible que tenga que hacer algo como:
class Example(object):
def __init__(self):
self.trigger_event = threading.Event()
def set_trigger(self):
# do some stuff
self.trigger_event.set()
e1 = Example()
print(e1.trigger_event.is_set())
e1.set_trigger()
print(e1.trigger_event.is_set())
e2 = Example()
print(e2.trigger_event.is_set())
e2.set_trigger()
e2.trigger_event.wait()
print(e2.trigger_event.is_set())
Salida:
False
True
False
True