example_of_multiprocess.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. """
  2. 用下面的命令运行程序并查看执行时间,例如:
  3. time python3 example05.py
  4. real 0m20.657s
  5. user 1m17.749s
  6. sys 0m0.158s
  7. 使用多进程后实际执行时间为20.657秒,而用户时间1分17.749秒约为实际执行时间的4倍
  8. 这就证明我们的程序通过多进程使用了CPU的多核特性,而且这台计算机配置了4核的CPU
  9. """
  10. import concurrent.futures
  11. import math
  12. PRIMES = [
  13. 1116281,
  14. 1297337,
  15. 104395303,
  16. 472882027,
  17. 533000389,
  18. 817504243,
  19. 982451653,
  20. 112272535095293,
  21. 112582705942171,
  22. 112272535095293,
  23. 115280095190773,
  24. 115797848077099,
  25. 1099726899285419
  26. ] * 5
  27. def is_prime(num):
  28. """判断素数"""
  29. assert num > 0
  30. if num % 2 == 0:
  31. return False
  32. for i in range(3, int(math.sqrt(num)) + 1, 2):
  33. if num % i == 0:
  34. return False
  35. return num != 1
  36. def main():
  37. """主函数"""
  38. with concurrent.futures.ProcessPoolExecutor() as executor:
  39. for number, prime in zip(PRIMES, executor.map(is_prime, PRIMES)):
  40. print('%d is prime: %s' % (number, prime))
  41. if __name__ == '__main__':
  42. main()