def build_board_permutations(rows, columns, used_pieces, nprocs): """ Build all the board permutations in parallel. :param rows: :param columns: :param used_pieces: :param nprocs: :return: """ permutations = build_permutations(used_pieces) progress_bar = ProgressBar(maxval=len(permutations), widgets=[Bar(), AdaptiveETA()]).start() board_set = set() parallel_args = [(rows, columns, perm) for perm in permutations] built_boards = parmap(build_boards, parallel_args, nprocs, progress_bar) for board in built_boards: board_set.update(board) progress_bar.finish() return board_set
def test_build_permutations(self): permutations = build_permutations(['r', 'q', 'k', 'n', 'b']) self.assertEqual(len(permutations), 120)