Was reading the official python document and I noticed they mentioned queues being more efficient for adding/removing elements vs list so I wrote a quick test the validate this claim and I wasn't very impressed by the results it seems queues are just slightly faster so my question to the list, is deque used much in python over general lists? <div>
<br></div><div><div><br></div><div><div> 1 #!/usr/bin/python</div><div> 2 </div><div> 3 import time</div><div> 4 from collections import deque</div><div> 5 </div><div> 6 nameList = ["Eric","John","Michael"]</div>
<div> 7 #queue = deque(["Eric","John","Michael"])</div><div> 8 queue = deque(nameList)</div><div> 9 </div><div> 10 def buildItems_q(q,n,mode):</div><div> 11 start = 0</div><div> 12 end = 0</div>
<div> 13 </div><div> 14 if mode == 'q':</div><div> 15 start = time.time()</div><div> 16 for r in xrange(n):</div><div> 17 queue.append("Terry_%s" % r)</div><div> 18 end = time.time()</div>
<div> 19 </div><div> 20 while q.pop() is not None:</div><div> 21 try:</div><div> 22 q.pop()</div><div> 23 except IndexError:</div><div> 24 pass</div><div> 25 break</div>
<div> 26 else:</div><div> 27 start = time.time()</div><div> 28 for r in xrange(n):</div><div> 29 q.append("Terry_%s" % r)</div><div> 30 end = time.time()</div><div> 31 </div>
<div> 32 while q.pop() is not None:</div><div> 33 try:</div><div> 34 q.pop()</div><div> 35 except IndexError:</div><div> 36 pass</div><div> 37 break</div>
<div> 38 </div><div> 39 return (end - start)</div><div> 40 </div><div> 41 if __name__ == "__main__":</div><div> 42 size = 10000000</div><div> 43 mode = 'list'</div><div><div>44 runtime = buildItems_q(queue,size,mode)</div>
<div> 45 print "Total run time: %f (%s)" % (runtime,mode)</div><div> 46 </div><div> 47 mode = 'Queue'</div><div> 48 runtime = buildItems_q(queue,size,mode)</div><div> 49 print "Total run time: %f (%s)" % (runtime,mode)</div>
<div><br></div><div><br></div><div><div>rbrown@laptop:~/code/python$ python queue.py </div><div>Total run time: 5.169290 (list)</div><div>Total run time: 5.112517 (Queue)</div><div><br></div></div></div><div><br></div><div>
<br></div></div><div><br>-- <br>[ Rodrick R. Brown ] <br><a href="http://www.rodrickbrown.com">http://www.rodrickbrown.com</a> <a href="http://www.linkedin.com/in/rodrickbrown">http://www.linkedin.com/in/rodrickbrown</a><br>
</div></div>