summaryrefslogtreecommitdiff
path: root/python2/primes.py
diff options
context:
space:
mode:
Diffstat (limited to 'python2/primes.py')
-rw-r--r--python2/primes.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/python2/primes.py b/python2/primes.py
new file mode 100644
index 0000000..7e83ea0
--- /dev/null
+++ b/python2/primes.py
@@ -0,0 +1,44 @@
+import futures
+import math
+import time
+
+PRIMES = [
+ 112272535095293,
+ 112582705942171,
+ 112272535095293,
+ 115280095190773,
+ 115797848077099]
+
+def is_prime(n):
+ if n % 2 == 0:
+ return False
+
+ sqrt_n = int(math.floor(math.sqrt(n)))
+ for i in range(3, sqrt_n + 1, 2):
+ if n % i == 0:
+ return False
+ return True
+
+def sequential():
+ return list(map(is_prime, PRIMES))
+
+def with_process_pool_executor():
+ with futures.ProcessPoolExecutor(10) as executor:
+ return list(executor.map(is_prime, PRIMES))
+
+def with_thread_pool_executor():
+ with futures.ThreadPoolExecutor(10) as executor:
+ return list(executor.map(is_prime, PRIMES))
+
+def main():
+ for name, fn in [('sequential', sequential),
+ ('processes', with_process_pool_executor),
+ ('threads', with_thread_pool_executor)]:
+ print('%s: ' % name.ljust(12), end='')
+ start = time.time()
+ if fn() != [True] * len(PRIMES):
+ print('failed')
+ else:
+ print('%.2f seconds' % (time.time() - start))
+
+main() \ No newline at end of file