I'm trying to crop a sequence of (8k) exr files and it seems like oiiotool
is quite a bit slower than using the python bindings and mulitprocessing.

Is this expected? I was under the assumption that it's always better/faster
to use oiiotool if possible. I've tried changing the --threads argument but
the results are the same. I'm on Windows.

oiiotool path/to/src.3935-3954%06d.exr --crop 6640x5760+1000+0
--runstats -o path/to/dst.3935-3954%06d.exr
--------------------------------
Time: 59 seconds

import sys
import os
import time
from multiprocessing.dummy import Pool as ThreadPool

import OpenImageIO as oiio

oiio.attribute("threads", 1)

def crop(path):
    im = oiio.ImageBuf(path)
    new_im = oiio.ImageBufAlgo.crop(im, oiio.ROI(1000, 7640, 0, 5760))
    new_filepath = "{0}/{1}".format("D:/tmp/exr_crop", os.path.basename(path))
    new_im.write(new_filepath)

dir_path = "D:/tmp/exr_src"
files  = ["{0}/{1}".format(dir_path, x) for x in os.listdir(dir_path)]

st = time.time()

pool = ThreadPool(48)
results = pool.map(crop, files)

et = time.time()

print("Total time: {0}".format(et-st))

--------------------------------
Time: 6.9 seconds


/Simon



-------------------------------
Simon Björk
Compositor/TD

+46 (0)70-2859503
www.bjorkvisuals.com
_______________________________________________
Oiio-dev mailing list
Oiio-dev@lists.openimageio.org
http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org

Reply via email to