'Run *nthreads* threads extracting randomness with the given *seed*
(no seeding if 0).'

def extract_in_threads(self, nthreads, extract_randomness, seed):

    results = [self._get_output(self._extract_iterations) for i in range((nthreads + 1))]
    def target(i):
        extract_randomness(seed=seed, out=results[i])
    threads = [threading.Thread(target=target, args=(i,)) for i in range(nthreads)]
    for th in threads:
        th.start()
    target(nthreads)
    for th in threads:
        th.join()
    return results
