File: //proc/self/root/usr/lib/python3.6/site-packages/rsa/__pycache__/parallel.cpython-36.pyc
3
�Cb`e � @ s� d Z ddlZddlmZ ddlZddlZeedd�dd�Z eeed�dd �Z
d gZed
kr�e
d� ddlZx>ed�D ]2Zej� \ZZer�P ed
dkrterte
de � qtW e
d� dS )z�Functions for parallel computation on multiple cores.
Introduced in Python-RSA 3.1.
.. note::
Requires Python 2.6 or newer.
� N)�
Connection)�nbits�pipe�returnc C s0 x*t jj| �}t jj|�r|j|� d S qW d S )N)�rsaZrandnumZread_random_odd_intZprimeZis_prime�send)r r Zinteger� r �/usr/lib/python3.6/parallel.py�_find_prime s
r
)r �poolsizer c
sx t jdd�\}�z:� �fdd�t|�D �}x|D ]}|j� q0W |j� }W d|j� �j� X x|D ]}|j� qdW |S )aU 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
F)Zduplexc s g | ]}t jt� �fd ��qS ))�target�args)�mpZProcessr
)�.0�_)r � pipe_sendr r �
<listcomp>A s zgetprime.<locals>.<listcomp>N)r ZPipe�range�startZrecv�closeZ terminate)r r Z pipe_recvZprocs�p�resultr )r r r �getprime* s
r �__main__z'Running doctests 1000x or until failure�d �
z%i timesz
Doctests done)�__doc__Zmultiprocessingr Zmultiprocessing.connectionr Z rsa.primer Zrsa.randnum�intr
r �__all__�__name__�printZdoctestr �countZtestmodZfailuresZtestsr r r r �<module> s"