Tengo algunos problemas para comunicarme entre subprocesos en PyQt. Estoy usando señales para comunicarme entre dos hilos, un emisor y un oyente. El remitente envía mensajes, que se espera sean recibidos por el oyente. Sin embargo, no se reciben mensajes. ¿Alguien puede sugerir lo que podría estar yendo mal? Estoy seguro de que debe ser algo simple, pero he estado buscando durante horas y no he encontrado nada. ¡Gracias por adelantado!Problema de subprocesamiento y señales en PyQt
from PyQt4 import QtCore,QtGui
import time
class Listener(QtCore.QThread):
def __init__(self):
super(Listener,self).__init__()
def run(self):
# just stay alive, waiting for messages
print 'Listener started'
while True:
print '...'
time.sleep(2)
def say_hello(self):
print ' --> Receiver: Hello World!'
class Sender(QtCore.QThread):
# a signal with no arguments
signal = QtCore.pyqtSignal()
def __init__(self):
super(Sender,self).__init__()
# create and start a listener
self.listener = Listener()
self.listener.start()
# connect up the signal
self.signal.connect(self.listener.say_hello)
# start this thread
self.start()
def run(self):
print 'Sender starting'
# send five signals
for i in range(5):
print 'Sender -->'
self.signal.emit()
time.sleep(2)
# the sender's work is done
print 'Sender finished'
Qt decide por cuál de ellos para enviar una señal al dependiendo de qué hilo creado la instancia del objeto de la señal está en. Es decir, si se crea un objeto de escucha de su hilo principal y enviar señales a ella, que va a invocarlos en el hilo principal. Recuerde, el objeto no es el hilo. Ver p. ftp://ftp.qt.nokia.com/videos/DevDays2007/DevDays2007%20-%20Multi-threading_in_Qt.pdf para obtener más información sobre "afinidad de subprocesos" en Qt. –