B d @sdZddlZddlmZddlZddlZeeddddZ eeeddd Z d gZ e d kre d ddlZx>ed D]2Ze\ZZerPed dkrterte deqtWe ddS)zFunctions for parallel computation on multiple cores. Introduced in Python-RSA 3.1. .. note:: Requires Python 2.6 or newer. N) Connection)nbitspipereturncCs0x*tj|}tj|r||dSqWdS)N)rsaZrandnumZread_random_odd_intprimeZis_primesend)rrintegerr 3/tmp/pip-target-jj3kjtpb/lib/python/rsa/parallel.py _find_prime s    r )rpoolsizercsxtjdd\}z:fddt|D}x|D] }|q0W|}Wd|Xx|D] }|qdW|S)aUReturns a prime number that can be stored in 'nbits' bits. Works in multiple threads at the same time. >>> p = getprime(128, 3) >>> rsa.prime.is_prime(p-1) False >>> rsa.prime.is_prime(p) True >>> rsa.prime.is_prime(p+1) False >>> from rsa import common >>> common.bit_size(p) == 128 True F)Zduplexcsg|]}tjtfdqS))targetargs)mpProcessr ).0_)r pipe_sendr r Aszgetprime..N)rZPiperangestartrecvclose terminate)rr Z pipe_recvZprocspresultr )rrr getprime*s        r__main__z'Running doctests 1000x or until failured z%i timesz Doctests done)__doc__multiprocessingrZmultiprocessing.connectionrZ rsa.primerZ rsa.randnumintr r__all____name__printdoctestrcounttestmodZfailurestestsr r r r s"  )