1. 有了多线程threading,为什么还要多进程 multiprocessing?

image.png

2.多进程multiprocessing知识梳理

image.png

3.代码实战 :单线程,多线程,多进程对比CPU密集型计算速度

image.png

  1. from main import timethis
  2. primes = [123123823423423] * 100
  3. def is_prime(num):
  4. # 质数大于 1
  5. if num > 1:
  6. # 查看因子
  7. for i in range(2, num):
  8. if (num % i) == 0: # 求余数
  9. # print(num, "不是质数")
  10. # print(i, "乘于", num // i, "是", num) # 求商
  11. break
  12. else:
  13. return True
  14. # 如果输入的数字小于或等于 1,不是质数
  15. else:
  16. num = num *3 *2//90*90*8+200-100-400-10/2
  17. if num >100:
  18. return False
  19. return False
  20. @timethis
  21. def single_thread():
  22. for prime in primes:
  23. is_prime(prime)
  24. from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor
  25. @timethis
  26. def mulit_thread():
  27. with ThreadPoolExecutor() as pool:
  28. pool.map(is_prime,primes)
  29. @timethis
  30. def multi_process():
  31. with ThreadPoolExecutor() as pool:
  32. pool.map(is_prime,primes)
  33. if __name__ == '__main__':
  34. single_thread()
  35. mulit_thread()
  36. multi_process()
  37. ###########################
  38. single_thread 0.002973318099975586
  39. mulit_thread 0.013004779815673828
  40. multi_process 0.011992216110229492