ó
írUc           @  sâ   d  Z  d d l m Z d d l Z d d l Z d d l Z d   Z d   Z	 d g Z
 e d k rŢ e d  d d l Z xW e d	  D]I Z e j   \ Z Z e rŚ Pn  e r e d
 d k r e d e  q q We d  n  d S(   s   Functions for parallel computation on multiple cores.

Introduced in Python-RSA 3.1.

.. note::

    Requires Python 2.6 or newer.

i˙˙˙˙(   t   print_functionNc         C  sP   xI t  rK t j j |   } | d O} t j j |  r | j |  d  Sq Wd  S(   Ni   (   t   Truet   rsat   randnumt   read_random_intt   primet   is_primet   send(   t   nbitst   pipet   integer(    (    s-   c:\Python27\lib\site-packages\rsa\parallel.pyt   _find_prime"   s    	
c         C  s   t  j d t  \ } } g  t |  D]$ } t  j d t d |  | f  ^ q% } g  | D] } | j   ^ qV | j   } g  | D] } | j   ^ q | S(   s]  Returns 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
    
    t   duplext   targett   args(	   t   mpt   Pipet   Falset   ranget   ProcessR   t   startt   recvt	   terminate(   R   t   poolsizet	   pipe_recvt	   pipe_sendt   _t   procst   pt   result(    (    s-   c:\Python27\lib\site-packages\rsa\parallel.pyt   getprime.   s    4R   t   __main__s'   Running doctests 1000x or until failureid   i
   i    s   %i timess   Doctests done(   t   __doc__t
   __future__R    t   multiprocessingR   t	   rsa.primeR   t   rsa.randnumR   R   t   __all__t   __name__t   printt   doctestR   t   countt   testmodt   failurest   tests(    (    (    s-   c:\Python27\lib\site-packages\rsa\parallel.pyt   <module>   s"   		 	
