--- On Wed, 9/1/10, Brian Granger <[email protected]> wrote:
> > So right now you're in a loop in which you let qt4 (or
> wx) watch the file descriptors qt4 needs, then zeromq the
> file descriptors that zeromq needs, and so on?
>
> ZMQ sockets are not really sockets in that they do not have
> a file descriptor interface.
That may be, but at the bottom of the ZMQ event loop is a call to select(),
which expects a pair of ordinary file descriptors. At the same time, at the
bottom of the qt4 event loop is also a call to select(), also using a set of
file descriptors.
Currently your event loop works approximately as follows:
1) Run the qt4 event loop, which calls select() inside qt4, watching the file
descriptors that qt4 knows about.
2) Interrupt the qt4 event loop, and enter the ZMQ event loop, which calls
select() inside ZMQ to watch the file descriptors ZMQ knows about.
3) If none if the ZMQ file descriptors have been signaled, go to 1).
Ideally, you would want to call select() only once, and have it watch both the
file descriptors qt4 knows about, as well as the file descriptors ZMQ knows
about.
So how to implement this?
Think about just the ZMQ event loop for now. Just before entering the ZMQ event
loop, ZMQ knows which file descriptors it should watch when it calls select().
Which means that ZMQ maintains in some form or another a list of file
descriptors to watch. Now I don't know the details of ZMQ, but I suppose there
is some function inside ZMQ that effectively adds one file descriptor to the
ZMQ list of file descriptors to watch. Now, instead of this function, call an
ipython-specific function that effectively adds this file descriptor to the
list of file descriptors that qt should watch for (probably using
QSocketNotifier). Now you don't need to enter the ZMQ event loop at all: When
you enter the qt event loop, and there is any activity on one of the ZMQ file
descriptors, the qt event loop will notice and take the appropriate action.
Does this make sense?
--Michiel.
------------------------------------------------------------------------------
This SF.net Dev2Dev email is sponsored by:
Show off your parallel programming skills.
Enter the Intel(R) Threading Challenge 2010.
http://p.sf.net/sfu/intel-thread-sfd
_______________________________________________
Matplotlib-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel