cf.py 983 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. from concurrent import futures
  2. import math
  3. import time
  4. import sys
  5. def calc(val):
  6. time.sleep(1)
  7. result = math.sqrt(float(val))
  8. return result
  9. def use_threads(num, values):
  10. t1 = time.time()
  11. with futures.ThreadPoolExecutor(num) as tex:
  12. result = tex.map(calc, values)
  13. t2 = time.time()
  14. return t2 - t1
  15. def use_process(num, values):
  16. t1 = time.time()
  17. with futures.ProcessPoolExecutor(num) as pex:
  18. results = pex.map(calc, values)
  19. t2 = time.time()
  20. return t2 - t1
  21. def main(workers, values):
  22. print(f'Using {workers} workers for {len(values)} values')
  23. t_sec = use_threads(workers, values)
  24. print(f"Threads took {t_sec:.4f} seconds")
  25. p_sec = use_process(workers, values)
  26. print(f"Processes took {t_sec:.4f} seconds")
  27. if __name__ == '__main__':
  28. workers = 3
  29. if len(sys.argv) > 1:
  30. workers = int(sys.argv[1])
  31. values = list(range(1, 6))
  32. main(workers, values)