| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- """
- 多进程和进程池的使用
- 多线程因为GIL的存在不能够发挥CPU的多核特性
- 对于计算密集型任务应该考虑使用多进程
- time python3 example22.py
- real 0m11.512s
- user 0m39.319s
- sys 0m0.169s
- """
- import concurrent.futures
- import math
- PRIMES = [
- 1116281,
- 1297337,
- 104395303,
- 472882027,
- 533000389,
- 817504243,
- 982451653,
- 112272535095293,
- 112582705942171,
- 112272535095293,
- 115280095190773,
- 115797848077099,
- 1099726899285419
- ] * 5
- 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 main():
- """主函数"""
- with concurrent.futures.ProcessPoolExecutor() as executor:
- for number, prime in zip(PRIMES, executor.map(is_prime, PRIMES)):
- print('%d is prime: %s' % (number, prime))
- if __name__ == '__main__':
- main()
|