[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'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"><<a href="mailto:mads.ipsen@gmail.com" \
target="_blank">mads.ipsen@gmail.com</a>></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 'moveToThread', 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 = ['sleep', 'work', 'run']<br>
arg = QtCore.Q_ARG(object, tasks)<br>
Core.QMetaObject.invokeMethod(self._worker, 'addTasks',<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'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