Problem with queues and gobject event loop

Roman Kapl msntfs at gmail.com
Fri Sep 11 15:22:00 EDT 2009


Why does not this snipplet work?
-----------------------------------------------------------------
from job import JobQueue
import Queue
import threading
import gobject
q=JobQueue()
def worker():
    print "Worker waiting"
    q.get()
    print "Got job!"

if __name__ == "__main__":
    t = threading.Thread(target=worker)
    t.start()
    q.put(1)
    loop = gobject.MainLoop()
    loop.run()
---------------------------------------------------------------------
It blocks indefinitely on the q.get() in the worker thread. When I
remove the the gobject main loop call, the code works fine and worker
thread gets to the print "Got job!" statement. This is just simplified
example to show the weird behaviour, otherwise I am trying to receive
messages via DBus and schedule jobs for another thread(I am a DBus
server). So is it a bug, my mistake or just simply queues can't be
used in combination with gobject main loop? Can I use dbus without
main loop(since I really don't need it, but I couldn't find any
example how to get rid of it.

Thank you.



More information about the Python-list mailing list