def nprocesses_nthreads(n=CPU_COUNT): """ The default breakdown of processes and threads for a given number of cores Parameters ---------- n: int Number of available cores Examples -------- >>> nprocesses_nthreads(4) (4, 1) >>> nprocesses_nthreads(32) (8, 4) Returns ------- nprocesses, nthreads """ if n <= 4: processes = n else: processes = min(f for f in factors(n) if f >= math.sqrt(n)) threads = n // processes return (processes, threads)
def test_factors(): assert factors(0) == set() assert factors(1) == {1} assert factors(2) == {1, 2} assert factors(12) == {1, 2, 3, 4, 6, 12} assert factors(15) == {1, 3, 5, 15}