Skip to content

Instantly share code, notes, and snippets.

@x3ro
Created January 31, 2012 22:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save x3ro/1713601 to your computer and use it in GitHub Desktop.
Save x3ro/1713601 to your computer and use it in GitHub Desktop.
from Queue import Queue
from Queue import Empty
import threading
import time
def queueGetNowait(queue):
try:
return queue.get_nowait()
except Empty:
return None
def ioThread(inQueue, outQueue):
while True:
i = inQueue.get(True)
time.sleep(0.075)
outQueue.put(i)
def processingThread(inQueue, outQueue):
i = 0
requestsProcessed = 0
initialTime = time.time()
lastTime = initialTime
while True:
i += 1
outQueueItem = queueGetNowait(outQueue)
if outQueueItem != None:
time.sleep(0.015)
requestsProcessed += 1
elif (i % 3) == 0:
inQueue.put(i)
else:
time.sleep(0.015)
requestsProcessed += 1
currentTime = time.time()
if (currentTime - lastTime) > 1:
qs = inQueue.qsize()
print "Req/s: " + str(requestsProcessed / (currentTime - initialTime))
print "InQueue items:" + str(inQueue.qsize())
print "=========="
lastTime = time.time()
inQueue = Queue()
outQueue = Queue()
b = threading.Thread(target=ioThread, args=(inQueue, outQueue))
a = threading.Thread(target=processingThread, args=(inQueue, outQueue))
a.start()
b.start()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment