diff options
Diffstat (limited to 'geometry.py')
-rw-r--r-- | geometry.py | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/geometry.py b/geometry.py index 81bc82d..9ef49bc 100644 --- a/geometry.py +++ b/geometry.py @@ -5,6 +5,7 @@ from itertoolset import * from tools import timeit from hashlib import md5 import cPickle as pickle +import gzip # all material/surface properties are interpolated at these # wavelengths when they are sent to the gpu @@ -266,7 +267,7 @@ class Geometry(object): cache_path = os.path.join(cache_dir, cache_file) try: - f = open(cache_path, 'rb') + f = gzip.GzipFile(cache_path, 'rb') except IOError: pass else: @@ -345,13 +346,14 @@ class Geometry(object): if unique_zvalues.size == 1: break + print >>sys.stderr, 'Writing BVH to cache directory...' + if not os.path.exists(cache_dir): os.makedirs(cache_dir) - f = open(cache_path, 'wb') - data = {} - for key in ['lower_bounds', 'upper_bounds', 'node_map', 'node_map_end', 'layers', 'first_node']: - data[key] = getattr(self, key) - data['reorder'] = reorder - pickle.dump(data, f, -1) - f.close() + with gzip.GzipFile(cache_path, 'wb', compresslevel=1) as f: + data = {} + for key in ['lower_bounds', 'upper_bounds', 'node_map', 'node_map_end', 'layers', 'first_node']: + data[key] = getattr(self, key) + data['reorder'] = reorder + pickle.dump(data, f, -1) |