Brian <br...@merrells.org> added the comment: Jesse,
I am afraid my last post may have confused the issue. As I mentioned in my first post, the problem arises when JoinableQueue.put is preempted between its two lines. Perhaps the easiest way to illustrate this is to exacerbate it by modifying JoinableQueue.put to force a preemption at this inopportune time. import time def put(self, item, block=True, timeout=None): Queue.put(self, item, block, timeout) time.sleep(1) self._unfinished_tasks.release() Almost any example will now fail. from multiprocessing import JoinableQueue, Process def printer(in_queue): while True: print in_queue.get() in_queue.task_done() if __name__ == '__main__': jqueue = JoinableQueue() a = Process(target = printer, args=(jqueue,)).start() jqueue.put("blah") ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue4660> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com