469,951 Members | 2,721 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,951 developers. It's quick & easy.

PyQt and async I/O

djw
Greetings-

I was looking at the ASPN recipe for async I/O and Tkinter:

http://aspn.activestate.com/ASPN/Coo...n/Recipe/82965

I am interested in using the recipe that is provided in the comments section
for PyQt courtesy of Laura Creighton.

I have a question though....

In the code, it says:

"One important thing to remember is that the thread has to yield
control."

That appears in this code (the thread that will contain the async I/O):

def workerThread1(self):
"""
This is where we handle the asynchronous I/O. For example, it may be
a 'select()'.
One important thing to remember is that the thread has to yield
control.
"""
while self.running:
# To simulate asynchronous I/O, we create a random number at
# random intervals. Replace the following 2 lines with the real
# thing.
time.sleep(rand.random() * 0.3)
msg = rand.random()
self.queue.put(msg)
If you were to use asyncore for this async I/O, there is no yielding that I
can see. Select() doesn't yield, and there is no time.sleep() in the
asyncore.loop() code. Even if I were to add a time.sleep() to the loop,
wouldn't the fact that select() blocks for some timeout value (default=30.0
sec) imply that it would only yield after the select() timed out each time
through the loop? That would seem to make for a pretty unresponsive UI.

Hopefully somebody can clue me into understanding this.

Thanks,

Don

Jul 18 '05 #1
1 3414
On Tue, Jul 01, 2003 at 02:01:43PM -0700, djw wrote:
[...]

If you were to use asyncore for this async I/O, there is no yielding that I
can see. Select() doesn't yield, and there is no time.sleep() in the
asyncore.loop() code. Even if I were to add a time.sleep() to the loop,
wouldn't the fact that select() blocks for some timeout value (default=30.0
sec) imply that it would only yield after the select() timed out each time
through the loop? That would seem to make for a pretty unresponsive UI.

Hopefully somebody can clue me into understanding this.


Twisted has support for Qt -- see the 'twisted.internet.qtreactor' module.
That might give you some ideas; alternatively, you could just use Twisted
and stop worrying ;)

-Andrew.
Jul 18 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

10 posts views Thread by Ilya Knizhnik | last post: by
35 posts views Thread by Vamsi Mudrageda | last post: by
8 posts views Thread by simo | last post: by
10 posts views Thread by svenn.are | last post: by
3 posts views Thread by Fabio | last post: by
10 posts views Thread by Simon John | last post: by
4 posts views Thread by Phil Thompson | last post: by
17 posts views Thread by eholbroo | last post: by
3 posts views Thread by Phil Thompson | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.