from multiprocessing import Pool, cpu_count
from time import perf_counter_ns as timer
from montecarlo import (puntsQuadrantQuadrat, pi_segons, escriuResultats)
import sys

def main(n, nProcessos):
    print('Càlcul mitjançant Pool')
    np = cpu_count()
    print(f'detectat {np} processadors')
    inici = timer()
    repart= nProcessos * [ n // nProcessos]
    with Pool(nProcessos) as p:
        resultats = p.map(puntsQuadrantQuadrat, repart)
    nc, nq = 0, 0
    for n_cercle, n_quadrat in resultats:
        nc += n_cercle
        nq += n_quadrat
    pi = pi_segons(nc, nq)
    fi = timer()
    escriuResultats(inici, fi, pi)

if __name__=='__main__':
    main(int(sys.argv[1]), int(sys.argv[2]))

