From: Christian Heller Date: Tue, 8 Dec 2020 23:16:13 +0000 (+0100) Subject: Avoid multiprocessing until it's really worth it. X-Git-Url: https://plomlompom.com/repos/%7B%7Bprefix%7D%7D/static/blog?a=commitdiff_plain;h=9bf1355e17e7903212d439fe718ae18939466962;p=plomrogue2 Avoid multiprocessing until it's really worth it. --- diff --git a/plomrogue/game.py b/plomrogue/game.py index 3b0b25f..b0233b3 100755 --- a/plomrogue/game.py +++ b/plomrogue/game.py @@ -230,7 +230,6 @@ class Game(GameBase): """Send out game state data relevant to clients.""" # TODO: limit to connection_id if provided - print('DEBUG send_gamestate') self.io.send('TURN ' + str(self.turn)) from plomrogue.mapping import FovMap import multiprocessing @@ -242,15 +241,19 @@ class Game(GameBase): player = self.get_player(c_id) if player._fov: continue - player.prepare_multiprocessible_fov_stencil() #! + player.prepare_multiprocessible_fov_stencil() player_fovs += [player._fov] player_fov_ids += [player.id_] - print('DEBUG regen FOV for', player.id_) - if len(player_fovs) > 0: + new_fovs = [] + single_core_until = 8 # since multiprocess has its own overhead + if len(player_fovs) > single_core_until: pool = multiprocessing.Pool() - new_fovs = pool.map(FovMap.init_terrain, [fov for fov in player_fovs]) #! + new_fovs = pool.map(FovMap.init_terrain, [fov for fov in player_fovs]) pool.close() pool.join() + elif len(player_fovs) <= single_core_until: + for fov in player_fovs: + new_fovs += [fov.init_terrain()] for i in range(len(player_fov_ids)): id_ = player_fov_ids[i] player = self.get_thing(id_)