summaryrefslogtreecommitdiff
path: root/rsa/parallel.py
diff options
context:
space:
mode:
authorSybren A. Stüvel <sybren@stuvel.eu>2016-01-22 11:01:39 +0100
committerSybren A. Stüvel <sybren@stuvel.eu>2016-01-22 11:01:39 +0100
commita26f518df5eb42d004c0fc19dfdb630aecb182f7 (patch)
treec3891b22cccfab224fa989f1a66656c04126318e /rsa/parallel.py
parent2e900cae53f69c660b782b6d49234b6ca7b2379e (diff)
downloadrsa-git-a26f518df5eb42d004c0fc19dfdb630aecb182f7.tar.gz
Fix #27: Close Pipes at parallel version of genprime.
Now closing pipes after reading result, and added a unittest.
Diffstat (limited to 'rsa/parallel.py')
-rw-r--r--rsa/parallel.py14
1 files changed, 9 insertions, 5 deletions
diff --git a/rsa/parallel.py b/rsa/parallel.py
index e5034ac..17a10ed 100644
--- a/rsa/parallel.py
+++ b/rsa/parallel.py
@@ -65,11 +65,15 @@ def getprime(nbits, poolsize):
(pipe_recv, pipe_send) = mp.Pipe(duplex=False)
# Create processes
- procs = [mp.Process(target=_find_prime, args=(nbits, pipe_send))
- for _ in range(poolsize)]
- [p.start() for p in procs]
-
- result = pipe_recv.recv()
+ try:
+ procs = [mp.Process(target=_find_prime, args=(nbits, pipe_send))
+ for _ in range(poolsize)]
+ [p.start() for p in procs]
+
+ result = pipe_recv.recv()
+ finally:
+ pipe_recv.close()
+ pipe_send.close()
[p.terminate() for p in procs]