def parallel_num_iterator(self, num_proc=None): nerr_tups = list(self._nsub_ndel_nins_iterator()) def dna_nums_given_nerr_tup(nerr_tup): nsub, ndel, nins = nerr_tup return [seqtools.dna2num(seq) for seq in self._freediv_subsphere_given_counts(nsub, ndel, nins)] pl = ProcessPool(num_proc) results = pl.map(dna_nums_given_nerr_tup, nerr_tups) for num in itertools.chain(*results): yield num pl._clear() del pl