/ / ¿Hay eventos de hebras cruzadas incorporados en Python? - Python, eventos, delegados.

¿Hay algún evento cross-thread incorporado en python? - python, eventos, delegados

¿Hay alguna sintaxis incorporada en Python que¿Me permite publicar un mensaje en un hilo de Python específico dentro de mi problema? Como "señal conectada en cola" en pyQt o :: PostMessage () en Windows. Necesito esto para la comunicación asíncrona entre partes del programa: hay una cantidad de subprocesos que manejan eventos de red y necesitan publicar estos eventos en un solo hilo "lógico" que traduce eventos de forma segura de un solo subproceso.

Respuestas

10 por respuesta № 1

los Cola módulo es python es muy adecuado para lo que estás describiendo.

Podría tener una cola configurada que sea compartidaentre todos tus hilos. Los subprocesos que manejan los eventos de la red pueden usar queue.put para publicar eventos en la cola. El hilo lógico usaría queue.get para recuperar eventos de la cola.

import Queue
# maxsize of 0 means that we can put an unlimited number of events
# on the queue
q = Queue.Queue(maxsize=0)

def network_thread():
while True:
e = get_network_event()
q.put(e)

def logic_thread():
while True:
# This will wait until there are events to process
e = q.get()
process_event(e)

1 para la respuesta № 2

No estoy muy seguro de lo que está buscando. Pero ciertamente no hay una sintaxis incorporada para eso. Eche un vistazo a la cola y enhebrar módulos Hay muchas cosas útiles como colas, condiciones, eventos, bloqueos y semáforos que se pueden usar para implementar todo tipo de comunicaciones síncronas y asíncronas.