--- On Wed, 9/1/10, Brian Granger <elliso...@gmail.com> 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
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Reply via email to