<div class="gmail_quote">On Tue, Sep 20, 2011 at 7:42 PM, MRAB <span dir="ltr"><<a href="mailto:python@mrabarnett.plus.com" target="_blank">python@mrabarnett.plus.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div>On 20/09/2011 19:13, Kayode Odeyemi wrote:<br><br></div><div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
def transaction_queue(queue, item, timeout, block=False):<br>
     queue = multiprocessing.Queue()<br>
</blockquote>
<br></div>
This line creates a new empty queue, hiding the one which was passed in.</blockquote><div><br>Removed. <br></div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">



<div><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
     if item is not {} and timeout is not 0:<br>
</blockquote>
<br></div>
`not {}` has the value True, so `item is not {}` means `item is True`.<br>
The `is` checks for identity, not equality, so this is true only if `item`<br>
actually has the value True or 1 (and this is an implementation-dependent<br>
behaviour).</blockquote><div><br>changed to:<br><br>if item != {} and timeout != None<br></div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">
<div><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
         print "Items are {0}".format(item)<br>
         for i in range(len(item)):<br>
</blockquote>
<br></div>
You're trying to get as many items from the queue as there are items in<br>
the dict `item`, which looks wrong to me.<div><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
             try:<br>
                 d = queue.get(block)<br>
                 print d<br>
             except Empty:<br>
                 print 'Fees queue empty at %s' % (i)<br>
             else:<br>
                 return process(q=queue, i=d, t=timeout)<br>
     else:<br>
         print 'No item in the queue to get'<br>
<br></blockquote></div></blockquote><div>Effected this. d has a result in the output (output below). So obviously, it is not empty.<br><br>What I'm trying to do in the initial code is to have all items in the queue evaluated at the<br>


same time such that each leaves the queue for processing when its timeout period has elapse.<br>
</div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex"><div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">




<br>
Q: Why are my queues empty even though there are items in it?<br>
<br>
</blockquote></div>
What makes you think there are items in it? You print out `item`, which<br>
is not the queue. <br></blockquote><div><br>I've made these changes but the queue still appears empty<br>
<br>None put to queue<br>{u'status': u'pending', u'timeout': 3}<br>empty queue<br>None put to queue<br>{u'status': u'pending', u'timeout': 5}<br>empty queue<br></div></div>


<br>Why 'empty queue' in process()? Also, why "None put to queue" since d confirms<br>the items in the queue?<br>
<br clear="all"><br>-- <br>Odeyemi 'Kayode O.<br><a href="http://www.sinati.com" target="_blank">http://www.sinati.com</a>. t: @charyorde<br><br>