[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pykde
Subject:    Re: [PyQt] Threaded communication
From:       "Jones, Bryan" <bjones () ece ! msstate ! edu>
Date:       2015-02-17 22:17:42
Message-ID: CAHhYbD8_pEf9iALd+FE8c9cMZVpBuuopExVtXC6zjGkG9w-XiA () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Mads,

It depends on your worker thread's code -- is _tasks modifiable at any
time? If so, either approach; if not (I would assume this is the case),
then only by invokeMethod or (perhaps cleaner) via signal/slot connections.

Bryan

On Mon, Feb 16, 2015 at 12:12 PM, Mads Ipsen <mads.ipsen@gmail.com> wrote:

> Hi,
>
> Suppose I have a worker object
>
> class Worker(QObject):
>      ...
>
>      @QtCore.pyqtSlot(object)
>      def addTasks(self, tasks):
>          self._tasks.append(tasks)
>
> which has been moved to a QThread using 'moveToThread', and then started
> from there.
>
> * From the main thread, when I add new tasks to the worker, must I
> always use
>
>    tasks = ['sleep', 'work', 'run']
>    arg = QtCore.Q_ARG(object, tasks)
>    Core.QMetaObject.invokeMethod(self._worker, 'addTasks',
> QtCore.Qt.QueuedConnection, arg)
>
> or can I call this directly, like
>
>    self._worker.addTasks(tasks)
>
> Observe that I pass a pure Python list from the main thread to the
> worker (not a QStringList).
>
> Best regards,
>
> Mads
>
> --
> +---------------------------------------------------------------------+
> | Mads Ipsen                                                          |
> +----------------------------------+----------------------------------+
> | Overgaden Oven Vandet 106, 4.tv  | phone:              +45-29716388 |
> | DK-1415 København K              | email:      mads.ipsen@gmail.com |
> | Denmark                          | map  : https://goo.gl/maps/oQ6y6 |
> +----------------------------------+----------------------------------+
> _______________________________________________
> PyQt mailing list    PyQt@riverbankcomputing.com
> http://www.riverbankcomputing.com/mailman/listinfo/pyqt




-- 
Bryan A. Jones, Ph.D.
Associate Professor
Department of Electrical and Computer Engineering
231 Simrall / PO Box 9571
Mississippi State University
Mississippi state, MS 39762
http://www.ece.msstate.edu/~bjones
bjones AT ece DOT msstate DOT edu
voice 662-325-3149
fax 662-325-2298

Our Master, Jesus Christ, is on his way. He'll show up right on
time, his arrival guaranteed by the Blessed and Undisputed Ruler,
High King, High God.
- 1 Tim. 6:14b-15 (The Message)

[Attachment #5 (text/html)]

<div dir="ltr">Mads,<div><br></div><div>It depends on your worker thread&#39;s code \
-- is _tasks modifiable at any time? If so, either approach; if not (I would assume \
this is the case), then only by invokeMethod or (perhaps cleaner) via signal/slot \
connections.</div><div><br></div><div>Bryan</div></div><div \
class="gmail_extra"><br><div class="gmail_quote">On Mon, Feb 16, 2015 at 12:12 PM, \
Mads Ipsen <span dir="ltr">&lt;<a href="mailto:mads.ipsen@gmail.com" \
target="_blank">mads.ipsen@gmail.com</a>&gt;</span> wrote:<br><blockquote \
class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc \
solid;padding-left:1ex">Hi,<br> <br>
Suppose I have a worker object<br>
<br>
class Worker(QObject):<br>
        ...<br>
<br>
        @QtCore.pyqtSlot(object)<br>
        def addTasks(self, tasks):<br>
              self._tasks.append(tasks)<br>
<br>
which has been moved to a QThread using &#39;moveToThread&#39;, and then started<br>
from there.<br>
<br>
* From the main thread, when I add new tasks to the worker, must I<br>
always use<br>
<br>
     tasks = [&#39;sleep&#39;, &#39;work&#39;, &#39;run&#39;]<br>
     arg = QtCore.Q_ARG(object, tasks)<br>
     Core.QMetaObject.invokeMethod(self._worker, &#39;addTasks&#39;,<br>
QtCore.Qt.QueuedConnection, arg)<br>
<br>
or can I call this directly, like<br>
<br>
     self._worker.addTasks(tasks)<br>
<br>
Observe that I pass a pure Python list from the main thread to the<br>
worker (not a QStringList).<br>
<br>
Best regards,<br>
<br>
Mads<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
+---------------------------------------------------------------------+<br>
> Mads Ipsen                                                                          \
> |<br>
+----------------------------------+----------------------------------+<br>
> Overgaden Oven Vandet 106, <a href="http://4.tv" target="_blank">4.tv</a>   | \
> phone:                     <a href="tel:%2B45-29716388" \
> value="+4529716388">+45-29716388</a> |<br>
> DK-1415 København K                     | email:         <a \
> href="mailto:mads.ipsen@gmail.com">mads.ipsen@gmail.com</a> |<br>
> Denmark                                       | map   : <a \
> href="https://goo.gl/maps/oQ6y6" target="_blank">https://goo.gl/maps/oQ6y6</a> \
> |<br>
+----------------------------------+----------------------------------+<br>
_______________________________________________<br>
PyQt mailing list      <a \
href="mailto:PyQt@riverbankcomputing.com">PyQt@riverbankcomputing.com</a><br> <a \
href="http://www.riverbankcomputing.com/mailman/listinfo/pyqt" \
target="_blank">http://www.riverbankcomputing.com/mailman/listinfo/pyqt</a></font></span></blockquote></div><br><br \
clear="all"><div><br></div>-- <br><div class="gmail_signature">Bryan A. Jones, \
Ph.D.<br>Associate Professor<br>Department of Electrical and Computer \
Engineering<br>231 Simrall / PO Box 9571<br>Mississippi State \
University<br>Mississippi state, MS 39762<br><a \
href="http://www.ece.msstate.edu/~bjones" \
target="_blank">http://www.ece.msstate.edu/~bjones</a><br>bjones AT ece DOT msstate \
DOT edu<br>voice 662-325-3149<br>fax 662-325-2298<br><br>Our Master, Jesus Christ, is \
on his way. He&#39;ll show up right on<br>time, his arrival guaranteed by the Blessed \
and Undisputed Ruler,<br>High King, High God.<br>- 1 Tim. 6:14b-15 (The \
Message)<br></div> </div>


[Attachment #6 (text/plain)]

_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic