from PIL import Image
import sys, time
import cStringIO
import threading, Queue
try:
format = sys.argv[1]
except:
format = "PNG"
im = Image.open("Images/lena.ppm")
im.load()
queue = Queue.Queue()
result = []
class Worker(threading.Thread):
def run(self):
while 1:
im = queue.get()
if im is None:
queue.task_done()
sys.stdout.write("x")
break
f = cStringIO.StringIO()
im.save(f, format, optimize=1)
data = f.getvalue()
result.append(len(data))
im = Image.open(cStringIO.StringIO(data))
im.load()
sys.stdout.write(".")
queue.task_done()
t0 = time.time()
threads = 20
jobs = 100
for i in range(threads):
w = Worker()
w.start()
for i in range(jobs):
queue.put(im)
for i in range(threads):
queue.put(None)
queue.join()
print
print time.time() - t0
print len(result), sum(result)
print result