[PySide] Signal emitted on a worker thread not being received by main thread

Lucas Tanure ltanure at gmail.com
Tue Apr 9 02:26:16 CEST 2013


Could you use the queue in python ? with Queue.get([*block*[, *timeout*]]) ?

Lucas A. Tanure Alves
+55 (19) 88176559


On Mon, Apr 8, 2013 at 6:59 PM, William Dias <william.dias at gmail.com> wrote:

> Hi, Tibold. Thanks for your reply.
>
> If I first move my worker to the new thread and then make the connection
> should it work?
>
> According to the documentation, it would use an auto-connection and since
> emitter and receiver don't have the same thread affinity, it would create a
> queued connection. Is it right?
>
> Best,
>
>
> 2013/4/8 Tibold Kandrai <kandraitibold at gmail.com>
>
>> Hi,****
>>
>> ** **
>>
>> I think you’ll have to use queued connection when you connect the
>> photoStatus signal to the photoStatus slot.****
>>
>> ** **
>>
>> See:****
>>
>>
>> http://qt-project.org/doc/qt-4.8/threads-qobject.html#signals-and-slots-across-threads
>> ****
>>
>> ** **
>>
>> Cheers,****
>>
>> Tibold****
>>
>> ** **
>>
>> *From:* pyside-bounces+kandraitibold=gmail.com at qt-project.org [mailto:
>> pyside-bounces+kandraitibold=gmail.com at qt-project.org] *On Behalf Of *William
>> Dias
>> *Sent:* 2013 April 08, Monday 17:01
>> *To:* pyside at qt-project.org
>> *Subject:* [PySide] Signal emitted on a worker thread not being received
>> by main thread****
>>
>> ** **
>>
>> Hi,****
>>
>> ** **
>>
>> I am facing an intermittent problem with my PySide application. I have a
>> GUI that spawns several threads that are responsible for sending photos to
>> a web server. The threads are created as shown bellow:****
>>
>> ** **
>>
>> photoConnectionThread = QThread()****
>>
>> photoConnectionObject = http_connection.PhotoConnection(self.filename)***
>> *
>>
>> photoConnectionObject.photoStatus.connect(self.photoStatus)             *
>> ***
>>
>> photoConnectionObject.moveToThread(photoConnectionThread)****
>>
>> photoConnectionThread.started.connect(photoConnectionObject.work)****
>>
>> photoConnectionThread.finished.connect(self.threadFinished)****
>>
>> photoConnectionThread.start()****
>>
>> ** **
>>
>> My worker thread tries to upload a photo only once and then emits a
>> signal to the main thread so that the status can be updated in a database.
>> ****
>>
>> ** **
>>
>> def work(self):****
>>
>>                         logger.info("photo object created on thread " +
>> str(self.thread()))****
>>
>>                         status = sendPhoto(self.filename)****
>>
>>                         self.photoStatus.emit(self.filename, status)****
>>
>>                         QThread.sleep(5)****
>>
>>                         logger.info("exiting thread " +
>> str(self.thread()))****
>>
>>                         self.thread().exit(0)****
>>
>> ** **
>>
>> The problem is that, sporadically, the main thread does not receive the
>> signal and consequently doesn't get the status updated.****
>>
>> ** **
>>
>> Does anybody have any idea why this is happening?****
>>
>> ** **
>>
>> I am using:****
>>
>> Python 2.7****
>>
>> PySide 1.1.1****
>>
>> Windows 7****
>>
>> ** **
>>
>> Thank you!****
>>
>
>
> _______________________________________________
> PySide mailing list
> PySide at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/pyside
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/pyside/attachments/20130408/e43330a1/attachment.html>


More information about the PySide mailing list