renders now work with the multiprocessing dispatcher
This commit is contained in:
@@ -420,11 +420,12 @@ dir but you forgot to put quotes around the directory, since it contains spaces.
|
||||
tilesets.append(tset)
|
||||
|
||||
|
||||
# non-multiprocessing dispatcher
|
||||
dispatch = dispatcher.Dispatcher()
|
||||
# multiprocessing dispatcher
|
||||
dispatch = dispatcher.MultiprocessingDispatcher()
|
||||
def print_status(*args):
|
||||
logging.info("Status callback: %r", args)
|
||||
dispatch.render_all(tilesets, print_status)
|
||||
dispatch.close()
|
||||
|
||||
|
||||
sys.exit("early abort")
|
||||
|
||||
@@ -48,13 +48,14 @@ class Dispatcher(object):
|
||||
"""
|
||||
# TODO use status callback
|
||||
|
||||
# setup tilesetlist
|
||||
self.setup_tilesets(tilesetlist)
|
||||
|
||||
# preprocessing
|
||||
for tileset in tilesetlist:
|
||||
tileset.do_preprocessing()
|
||||
|
||||
# setup tilesetlist
|
||||
self.setup_tilesets(tilesetlist)
|
||||
|
||||
|
||||
# iterate through all possible phases
|
||||
num_phases = [tileset.get_num_phases() for tileset in tilesetlist]
|
||||
for phase in xrange(max(num_phases)):
|
||||
@@ -350,7 +351,7 @@ class MultiprocessingDispatcher(Dispatcher):
|
||||
finished_jobs += self._handle_messages()
|
||||
return finished_jobs
|
||||
|
||||
def _handle_messages(self, timeout=1.0):
|
||||
def _handle_messages(self, timeout=0.01):
|
||||
# work function: takes results out of the result queue and
|
||||
# keeps track of how many outstanding jobs remain
|
||||
finished_jobs = []
|
||||
|
||||
@@ -46,10 +46,25 @@ class Textures(object):
|
||||
self.texture_size = 24
|
||||
self.texture_dimensions = (self.texture_size, self.texture_size)
|
||||
|
||||
# these are filled in in generate()
|
||||
self.terrain_images = None
|
||||
self.blockmap = []
|
||||
self.biome_grass_texture = None
|
||||
# this is set in in generate()
|
||||
self.generated = False
|
||||
|
||||
##
|
||||
## pickle support
|
||||
##
|
||||
|
||||
def __getstate__(self):
|
||||
# we must get rid of the huge image lists, and other images
|
||||
attributes = self.__dict__.copy()
|
||||
for attr in ['terrain_images', 'blockmap', 'biome_grass_texture', 'watertexture', 'lavatexture']:
|
||||
del attributes[attr]
|
||||
return attributes
|
||||
def __setstate__(self, attrs):
|
||||
# regenerate textures, if needed
|
||||
for attr, val in attrs.iteritems():
|
||||
setattr(self, attr, val)
|
||||
if self.generated:
|
||||
self.generate()
|
||||
|
||||
##
|
||||
## The big one: generate()
|
||||
@@ -82,6 +97,8 @@ class Textures(object):
|
||||
block = tex[0]
|
||||
scaled_block = block.resize(self.texture_dimensions, Image.ANTIALIAS)
|
||||
blockmap[i] = self.generate_texture_tuple(scaled_block)
|
||||
|
||||
self.generated = True
|
||||
|
||||
##
|
||||
## Helpers for opening textures
|
||||
|
||||
Reference in New Issue
Block a user