I have been experiencing strange thread behavior when I pass a message received via a Queue to a wx.PostEvent method (from wxPython). The relevant code in the thread is:
def run(self): while self.is_running: task = self.queue.get() wx.PostEvent(self.app.handle_task, task) self.queue is a Queue.Queue instance and self.app is a wx.Window instance I have a case where two items are placed in the queue one after the other, and it appears that only the first item is passed to wx.PostEvent. If I place a time.sleep(0.1) call anywhere within the while loop, both items get passed to wx.PostEvent. It works if I put time.sleep before the self.queue.get(), in between get() and PostEvent () or after PostEvent(). So it seems like a short delay is enough to get two items handled, although it doesn't seem to matter where I place the delay within the while loop. Does someone know what might explain this behavior? Thanks. -- http://mail.python.org/mailman/listinfo/python-list