mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-11-11 04:07:21 +03:00
57 lines
986 B
Python
57 lines
986 B
Python
|
from PIL import Image
|
||
|
|
||
|
import sys, time
|
||
|
import io
|
||
|
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 = io.BytesIO()
|
||
|
im.save(f, format, optimize=1)
|
||
|
data = f.getvalue()
|
||
|
result.append(len(data))
|
||
|
im = Image.open(io.BytesIO(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)
|