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

William Dias william.dias at gmail.com
Tue Apr 9 04:43:58 CEST 2013


Algis,

The signal is emitted by one thread and received by another. So I think the
sleep command will not interfere in the process given that I am dealing
with 2 different event loops. I've already tested without it and
unfortunately got the same results.


2013/4/8 Algis Kabaila <akabaila at pcug.org.au>

> **
>
> IMHO if you remove the sleep(5), if it still works sometimes, it will work
> every time. If a sent signal does not find slot, it just "fades away". That
> is my understanding how it works. And if the "sleep" between emitting the
> signal and receiving it is long enough, it will always fail. Try it with
> sleep(1000) and with sleep(1) and tell us what happens.
>
>
>
> On Monday 08 April 2013 21:26:16 Lucas Tanure wrote:
>
> 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 Sean Fisk <sean at seanfisk.com>
>
>
>
> 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/f0a973ec/attachment.html>


More information about the PySide mailing list