1234567891011121314151617181920212223242526272829303132333435363738 |
- from concurrent import futures
- import math
- import time
- import sys
- def calc(val):
- time.sleep(1)
- result = math.sqrt(float(val))
- return result
- def use_threads(num, values):
- t1 = time.time()
- with futures.ThreadPoolExecutor(num) as tex:
- result = tex.map(calc, values)
- t2 = time.time()
- return t2 - t1
- def use_process(num, values):
- t1 = time.time()
- with futures.ProcessPoolExecutor(num) as pex:
- results = pex.map(calc, values)
- t2 = time.time()
- return t2 - t1
- def main(workers, values):
- print(f'Using {workers} workers for {len(values)} values')
- t_sec = use_threads(workers, values)
- print(f"Threads took {t_sec:.4f} seconds")
- p_sec = use_process(workers, values)
- print(f"Processes took {t_sec:.4f} seconds")
- if __name__ == '__main__':
- workers = 3
- if len(sys.argv) > 1:
- workers = int(sys.argv[1])
- values = list(range(1, 6))
- main(workers, values)
|